2017-01-27 13 views
1

account_id、game_date、queue_typeの3つの列見出しがあります。私は、アカウントがqueue_typeごとに果たしたゲームの数を表示する必要があります。 Atm私は設定された期間のアカウントごとに再生されたゲームの総数を表示することができますが、私は合計に掘り下げて、代わりに合計の代わりにキュータイプの列を表示できますか?出力テーブルの列数を増やして詳細を表示する方法

SELECT account_id, COUNT(*) as GamesPlayed FROM Games 
WHERE DATE (game_date) BETWEEN '2012-01-01' AND '2013-01-01' 
GROUP BY account_id 
HAVING COUNT(account_id) > 2; 

は、これは私に2列、アカウントIDとその近くに果たした総ゲーム、しかし、代わりに私が列見出しとして上部にプレイしたゲームの種類をご希望の合計を提供します。合計4種類のゲームタイプがあります。

答えて

3

これを条件付き集計といいます。異なるタイプを数え、それらに必要な列名を割り当てることができます。 (データあたりqueue_type値を変更します)

SELECT account_id 
,COUNT(case when queue_type = 'A' THEN 1 END) as A 
,COUNT(case when queue_type = 'B' THEN 1 END) as B 
,COUNT(case when queue_type = 'C' THEN 1 END) as C 
,COUNT(case when queue_type = 'D' THEN 1 END) as D 
FROM Games 
WHERE game_date >= '2012-01-01' AND game_date <='2013-01-01' 
GROUP BY account_id 

以上単に

SELECT account_id 
,SUM(queue_type = 'A') as A 
,SUM(queue_type = 'B') as B 
,SUM(queue_type = 'C') as C 
,SUM(queue_type = 'D') as D 
FROM Games 
WHERE game_date >= '2012-01-01' AND game_date <='2013-01-01' 
GROUP BY account_id 
+1

あなたは 'も – GurV

+0

どのキュータイプのいずれかがある場合は速記'合計(queue_type = 'A')を使用することができます名前の真中に? – CH99

+2

ありがとう@GurV .. .. –

関連する問題