2016-05-10 7 views
2

私はテーブルt1持っている:カウント異なる行

id|id_title|action 

テーブル内のデータを:

1|1|like 
2|1|like 
3|1|unlike 
4|2|share 
5|2|share 

だから私は、クエリから次の結果を取得したい:

id|count like|count unlike|count share 

1|2|1|0 
2|0|0|2 

私は次のクエリを使用しようとします:

SELECT id_title, (Select Count(id) From T1 WHERE action='like') As CountOfItems FROM T1 GROUP BY id_title 

しかし、常に最初の行のカウントを返します。私がしなければならないこと?テーブルの構造を変えなければならないのでしょうか?

+0

テーブルにどのようなクエリを適用したいのか分かりませんでしたが、もう少し詳しいことはできますか? – Webeng

+0

私は自分の答えを編集しました。今は – Webeng

答えて

2
SELECT id_title AS id, SUM(action='like') AS 'count like', 
SUM(action='unlike') AS 'count unlike', SUM(action='share') 
AS 'count share' FROM t1 GROUP BY id_title 

それがあなたのために働いていた場合、私に教えてください。

+0

FROM節がありません – Thamilan

+0

@Thamizhan thanks :) – Webeng

6

条件付き集計を使用します。

select 
id_title 
,sum(case when action='like' then 1 else 0 end) As Count_Like 
,sum(case when action='unlike' then 1 else 0 end) As Count_Unlike 
,sum(case when action='share' then 1 else 0 end) As Count_Share 
FROM T1 
GROUP BY id_title 
+0

か、MySQLのように 'SUM(action = 'like')' – Strawberry

関連する問題