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
これまでに何を試しましたか?性別分けのためにCASEでSUMを調べましたか? – hsan
条件付き集計は将来検索するための重要な概念ですが、juergendはあなたに良い答えを提示します – Matt