3

私は列を持つテーブルを持っていpersonidますmsg

personid, msg
--------------
 1,      'msg1'
 2,      'msg2'
 2,      'msg3'
 3,      'msg4'
 1,      'msg2'

msgそれぞれの合計を取得したいpersonid。私はこのクエリを試しています:

select distinct personid, count(*)
FROM mytable;

私もこのクエリを試しました

select distinct personid, count(msg)
FROM mytable;

しかし、実際の結果は得られません。上記のデータに対して次の結果が必要です。

id, count
--------
1,   2
2,   2
3,   1
4

1 に答える 1

5

GROUP BYの代わりに使用するだけですDISTINCT。したがって、次のクエリを試してください。

SELECT personid, COUNT(msg) 
FROM mytable 
GROUP BY personid
ORDER BY personid;

このSQLFiddleを参照してください

GROUP BYAVG()MAX()MIN()、 などの集約関数を使用できますが、SUM()重複を削除するだけです。COUNT()DISTINCT

于 2012-09-08T12:21:53.230 に答える