简体   繁体   English

将 Postgresql 转换为 HiveSql

[英]Convert Postgresql into HiveSql

How do I convert below mentioned postgresql query into HiveSql如何将下面提到的 postgresql 查询转换为 HiveSql

SELECT
    COUNT(user_id) Total_profiles,
    COUNT(user_id) FITLER (WHERE profile_date BETWEEN '2020-01-01' AND '2020-03-31') as Q1_profile,
    COUNT(user_id) FITLER (WHERE profile_date BETWEEN '2020-04-01' AND '2020-06-30') as Q2_profile,
    COUNT(user_id) FITLER (WHERE profile_date BETWEEN '2020-07-01' AND '2020-09-30') as Q3_profile,
    COUNT(user_id) FITLER (WHERE profile_date BETWEEN '2020-010-01' AND '2020-12-31') as Q4_profile
FROM 
    customer_profiles
WHERE 
    profile_date BETWEEN '2020-01-01' AND '2020-12-31'

Use CASE expressions like this:像这样使用 CASE 表达式:

SELECT
    COUNT(user_id) Total_profiles,
    COUNT(case when profile_date BETWEEN '2020-01-01' AND '2020-03-31' then user_id else null end) as Q1_profile,
    COUNT(case when profile_date BETWEEN '2020-04-01' AND '2020-06-30' then user_id else null end) as Q2_profile,
    COUNT(case when profile_date BETWEEN '2020-07-01' AND '2020-09-30' then user_id else null end) as Q3_profile,
    COUNT(case when profile_date BETWEEN '2020-10-01' AND '2020-12-31' then user_id else null end) as Q4_profile
FROM 
    customer_profiles
WHERE 
    profile_date BETWEEN '2020-01-01' AND '2020-12-31'

Also in Hive version >= 1.3 you can use quarter function:同样在 Hive 版本 >= 1.3 中,您可以使用quarter function:

SELECT
    COUNT(user_id) Total_profiles,
    COUNT(case when quarter(profile_date)=1 then user_id else null end) as Q1_profile,
    COUNT(case when quarter(profile_date)=2 then user_id else null end) as Q2_profile,
    COUNT(case when quarter(profile_date)=3 then user_id else null end) as Q3_profile,
    COUNT(case when quarter(profile_date)=4 then user_id else null end) as Q4_profile
FROM 
    customer_profiles
WHERE 
    profile_date BETWEEN '2020-01-01' AND '2020-12-31'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM