问题描述
with user_industries as (
SELECT disTINCT company_id,industry,active_seats,revenue,seat_group,received_at FROM (
SELECT
nvl(u.clearbit_company_category_industry,u.company_industry) industry,u.received_at,u.company_id,u.active_seats,CASE
WHEN u.active_seats >= 1 AND u.active_seats <= 2 THEN 'group_1'
WHEN u.active_seats >= 3 AND u.active_seats <= 5 THEN 'group_2'
WHEN u.active_seats >= 6 AND u.active_seats <= 8 THEN 'group_3'
WHEN u.active_seats >= 9 THEN 'group_4'
ELSE u.active_seats
END seat_group,u.revenue,row_number() OVER (PARTITION BY u.company_id ORDER BY u.received_at DESC) rownum
FROM web_application_production_PHP.users u
) where rownum = 1 and received_at >= '2019-07-01'
运行 Case 语句时,我想分配一个字符串值以在我的报告中使用,我该怎么做?
解决方法
来自我的同事:嗯,您将座椅组分配给一个字符串,除非它不属于一个组,然后您将它分配给一个整数。 SQL 不喜欢那样。 我建议给默认情况一个像'group_0'这样的值,而不是像你现在这样的 u.active_seats。
SELECT DISTINCT company_id,industry,active_seats,revenue,seat_group,received_at FROM (
SELECT
nvl(u.clearbit_company_category_industry,u.company_industry) industry,u.received_at,u.company_id,u.active_seats,CASE
WHEN u.active_seats >= 1 AND u.active_seats <= 2 THEN 'group_1'
WHEN u.active_seats >= 3 AND u.active_seats <= 5 THEN 'group_2'
WHEN u.active_seats >= 6 AND u.active_seats <= 8 THEN 'group_3'
WHEN u.active_seats >= 9 THEN 'group_4'
ELSE 'group_0'
END seat_group,u.revenue,row_number() OVER (PARTITION BY u.company_id ORDER BY u.received_at DESC) rownum
FROM web_application_production_php.users u
) where rownum = 1 and received_at >= '2019-07-01'