我有這個表
我想按年齡與案例分組,并計算性別型別
這個案例,
我想按年齡與案例分組,并計算性別型別。
這種情況,
年齡<=20那么'組<=20'
年齡在21-40歲之間,那么'Group 21-40'
年齡在41-60歲之間,那么'組41-60'年齡>60然后'組>60'我試過這段代碼,但它給我帶來了一個錯誤
。%%sql。
select customer_id, birthdate, extract('year' from current_date) - extract('year' from birthdate ) age
case when age < = 20 then 'Group <=20'/span>
when年齡介于 21 和 40 then 'Group 21 - 40'
when年齡介于 41 和 60 then 'Group 41 - 60'
else 'Group > 60' end gender
from dim_customer
group by 1
有什么解決辦法嗎? 謝謝前
btw,我在python中使用這個代碼uj5u.com熱心網友回復:
在SELECT中沒有使用Alias列,但在GROUP BY和ORDER BY子句中使用。
-- PostgreSQL
SELECT t.*
, CASE WHEN age < = 20 THEN 'Group <=20'/span>
WHEN 年齡 BETWEEN 21 AND 40 THEN 'Group 21 - 40'
WHEN 年齡 BETWEEN 41 AND 60 THEN 'Group 41 - 60'
ELSE 'Group > 60' END gender
FROM (SELECT customer_id, birthdate
, extract('year' from current_date) - extract('year' from birthdate ) age
from dim_customer) t
請從網址https://dbfiddle.uk/?rdbms=postgres_11&fiddle=38c6ba05adc779aed3063e490bcc6376/a>
注意:使用date_part('year', current_timestamp :: DATE)-date_part('year', birthdate)進行年齡計算。
計算性別并在group by section使用別名
。SELECT CASE WHEN age < = 20 THEN 'Group <=20'/span>
WHEN 年齡 BETWEEN 21 AND 40 THEN 'Group 21 - 40'
WHEN 年齡 BETWEEN 41 AND 60 THEN 'Group 41 - 60'
ELSE 'Group > 60' END gender
, COUNT(t.gender) count_gender
, COUNT(CASE WHEN t. gender = 'M' THEN 1 END)gen_male
, COUNT(CASE WHEN t. gender = 'F' THEN 1 END)gen_female
FROM (SELECT customer_id, birthdate, gender
, extract('year' from current_date) - extract('year' from birthdate ) age
, date_part('year', current_timestamp :: DATE) - date_part('year', birthdate) age1
from dim_customer) t
GROUP BY CASE WHEN age <。 = 20 THEN 'Group <=20'/span>
WHEN 年齡 BETWEEN 21 AND 40 THEN 'Group 21 - 40'
WHEN 年齡 BETWEEN 41 AND 60 THEN 'Group 41 - 60'
ELSE 'Group > 60'/span> END
請從網址https://dbfiddle.uk/?rdbms=postgres_11&fiddle=ad8af9dd9b82ede20452377615ca7fde
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/307992.html
標籤:

