mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
179 lines
7.0 KiB
SQL
179 lines
7.0 KiB
SQL
-- IMPORTS
|
|
WITH companies AS (
|
|
SELECT * FROM {{ ref('int_exchange__companies_level_segment') }}
|
|
),
|
|
|
|
company_addresses AS (
|
|
SELECT * FROM {{ ref('stg_exchange__company_addresses') }}
|
|
),
|
|
|
|
current_wallets AS (
|
|
SELECT * FROM {{ ref('stg_exchange__current_wallets') }}
|
|
),
|
|
|
|
companies_and_users_relations AS (
|
|
SELECT * FROM {{ ref('stg_exchange__companies_and_users_relations') }}
|
|
),
|
|
|
|
company_contacts AS (
|
|
SELECT * FROM {{ ref('int_exchange__latest_company_contacts') }}
|
|
),
|
|
|
|
documents AS (
|
|
SELECT * FROM {{ ref('stg_exchange__documents') }}
|
|
),
|
|
|
|
-- LOGICS
|
|
latest_billing_company_addresses AS (
|
|
SELECT
|
|
*,
|
|
|
|
-- 1 will be latest updated address, rank by updated_at date
|
|
row_number() OVER
|
|
(PARTITION BY company_addresses.company_id
|
|
ORDER BY company_addresses.updated_at DESC) AS lastest_address_rank
|
|
|
|
FROM company_addresses
|
|
|
|
WHERE
|
|
is_billing_address = 1
|
|
|
|
QUALIFY
|
|
lastest_address_rank = 1
|
|
),
|
|
|
|
|
|
company_current_wallets AS (
|
|
SELECT
|
|
id,
|
|
owner_id AS company_id,
|
|
amount,
|
|
currency_id,
|
|
currency_name,
|
|
created_at,
|
|
updated_at
|
|
|
|
FROM current_wallets
|
|
|
|
WHERE
|
|
owner_type = 'App\\Models\\Company'
|
|
),
|
|
|
|
|
|
count_company_user AS (
|
|
SELECT
|
|
company_id,
|
|
COUNT(user_id) AS count_user
|
|
|
|
FROM companies_and_users_relations
|
|
|
|
GROUP BY company_id
|
|
),
|
|
|
|
latest_company_upload_identity_documents AS (
|
|
SELECT
|
|
id,
|
|
owner_type,
|
|
owner_id AS company_id,
|
|
document_type AS identity_document_type_name,
|
|
reference AS identity_number,
|
|
status,
|
|
status_name,
|
|
approved_at,
|
|
created_at,
|
|
|
|
row_number() OVER
|
|
(PARTITION BY company_id
|
|
ORDER BY created_at DESC) AS latest_row_number
|
|
|
|
FROM documents
|
|
|
|
WHERE
|
|
owner_type = 'App\\Models\\Company'
|
|
AND
|
|
document_type IN ('IDENTITY_CARD','SSM_REGISTRATION')
|
|
AND
|
|
status = '2'
|
|
|
|
QUALIFY
|
|
latest_row_number = '1'
|
|
|
|
),
|
|
|
|
-- FINAL
|
|
final__dim_exchange__companies AS (
|
|
SELECT
|
|
companies.id,
|
|
companies.name,
|
|
companies.marking_id,
|
|
companies.account_software_id,
|
|
companies.company_type,
|
|
companies.company_type_name,
|
|
companies.business_type,
|
|
companies.business_type_name,
|
|
companies.segment_id,
|
|
companies.segment_name,
|
|
companies.is_migrated_company,
|
|
companies.status,
|
|
companies.status_name,
|
|
companies.created_at,
|
|
|
|
company_contacts.reference AS company_contact_reference,
|
|
company_contacts.phone AS company_contact_phone,
|
|
company_contacts.email AS company_contact_email,
|
|
company_contacts.wechat_id AS company_contact_wechat_id,
|
|
|
|
latest_billing_company_addresses.id AS address_id,
|
|
latest_billing_company_addresses.country_id,
|
|
latest_billing_company_addresses.country_name,
|
|
latest_billing_company_addresses.country_short_code,
|
|
latest_billing_company_addresses.state_id,
|
|
latest_billing_company_addresses.state_name,
|
|
latest_billing_company_addresses.district_id,
|
|
latest_billing_company_addresses.district_name,
|
|
latest_billing_company_addresses.postcode,
|
|
latest_billing_company_addresses.address_line_one,
|
|
latest_billing_company_addresses.address_line_two,
|
|
latest_billing_company_addresses.is_billing_address,
|
|
latest_billing_company_addresses.deleted_at AS address_deleted_at,
|
|
latest_billing_company_addresses.created_at AS address_created_at,
|
|
latest_billing_company_addresses.updated_at AS address_updated_at,
|
|
|
|
company_current_wallets.id AS wallet_id,
|
|
IFF(company_current_wallets.id IS NOT NULL, 1, 0) AS have_wallet,
|
|
company_current_wallets.amount AS wallet_balance,
|
|
company_current_wallets.currency_id AS wallet_currency_id,
|
|
company_current_wallets.currency_name AS wallet_currency_name,
|
|
company_current_wallets.created_at AS wallet_created_at,
|
|
company_current_wallets.updated_at AS wallet_updated_at,
|
|
|
|
latest_company_upload_identity_documents.identity_document_type_name,
|
|
latest_company_upload_identity_documents.identity_number,
|
|
latest_company_upload_identity_documents.status AS identity_status,
|
|
latest_company_upload_identity_documents.status_name AS identity_status_name,
|
|
latest_company_upload_identity_documents.approved_at AS identity_approved_datetime,
|
|
latest_company_upload_identity_documents.created_at AS identity_created_datetime,
|
|
|
|
count_company_user.count_user AS number_of_user
|
|
|
|
FROM companies
|
|
|
|
LEFT JOIN latest_billing_company_addresses
|
|
ON (companies.id = latest_billing_company_addresses.company_id)
|
|
|
|
LEFT JOIN company_current_wallets
|
|
ON (companies.id = company_current_wallets.company_id)
|
|
|
|
LEFT JOIN count_company_user
|
|
ON (companies.id = count_company_user.company_id)
|
|
|
|
LEFT JOIN company_contacts
|
|
ON (companies.id = company_contacts.company_id)
|
|
|
|
LEFT JOIN latest_company_upload_identity_documents
|
|
ON (companies.id = latest_company_upload_identity_documents.company_id)
|
|
)
|
|
|
|
|
|
SELECT * FROM final__dim_exchange__companies
|