如何使用sql獲取以下格式的輸出? 我可以用大小寫來做到這一點,但我無法在同一行中獲得唯一的用戶數。得到最接近的
id unique_users male_count female_count
101 3 1 2
201 1 0 1
.
.
如何使用sql獲取以下格式的輸出? 我可以用大小寫來做到這一點,但我無法在同一行中獲得唯一的用戶數。得到最接近的
id unique_users male_count female_count
101 3 1 2
201 1 0 1
.
.
替代計數不同的男性和女性。
SELECT
ID,
COUNT(DISTINCT "USER") AS unique_users,
COUNT(DISTINCT DECODE(gender,'M',"USER")) AS male_count,
COUNT(DISTINCT DECODE(gender,'F',"USER")) AS female_count
FROM your_table
GROUP BY ID
ORDER BY ID;
和相同但沒有Oracle特定的DECODE函數。
SELECT
ID,
COUNT(DISTINCT "USER") AS unique_users,
COUNT(DISTINCT CASE gender WHEN 'M' THEN "USER" ELSE NULL END) AS male_count,
COUNT(DISTINCT CASE gender WHEN 'F' THEN "USER" ELSE NULL END) AS female_count
FROM your_table
WHERE ID = 101
GROUP BY ID
ORDER BY ID;
我引用了「USER」,因爲它在Oracle中有特定的含義。
select id,
count(distinct user) as unique_users,
sum(case when gender = 'M' then 1 else 0 end) as male_count,
sum(case when gender = 'F' then 1 else 0 end) as female_count
from your_table
group by id
如果我使用這種方法,男性和女性的數量將不會是唯一的計數。 – Siddarth
你到目前爲止嘗試過什麼?您是否考慮過CAS與SUM的性別分歧? – hsan
有條件的聚合是將來查找的關鍵概念,但juergend爲您提供了一個很好的答案 – Matt