0

次のようなテーブルがあります。

user_id, gender, sent
1        M       100
1        F       120
2        M       20
2        F       30

上記から次のようなテーブルが必要です。

user_id, male_sent, female_sent, total_sent 
1        100        120          220 
2        20         30           50 

これを理解するための (Postgres) SQL foo がありません。

4

2 に答える 2

2

集計関数をCASE式で使用して、結果を取得できます。

select user_id,
  sum(case when gender = 'M' then sent else 0 end) male_sent,
  sum(case when gender = 'F' then sent else 0 end) female_sent,
  sum(sent) total_sent
from yourtable
group by user_id

デモで SQL Fiddle を参照してください

于 2013-03-17T23:11:31.037 に答える
2

どのデータベースを使用していますか?

SQL Server を使用している場合は、次のようにすることができます。

SELECT user_id,sum(case when gender = 'M' then sent else 0 end) as male_sent,
sum(case when gender = 'F' then sent else 0 end) as female_sent,
sum(sent) as total_sent
FROM your_table_name
GROUP BY user_id
于 2013-03-17T23:14:28.233 に答える