2011-05-11 19 views
1

テーブルに項目があります。それぞれにはuser_idがあります。1つのSQLクエリでCOUNT(ID)と合計を選択する

ユーザーあたりのアイテム数とアイテムの合計数を確認したいと思います。

私はこれを行う場合:

SELECT COUNT(id) 
FROM items 
GROUP BY user_id 

を...私は、ユーザーごとの項目数を取得しますが、彼らがグループ化されているように、私はアイテムの合計数を取得することはできません。

これは可能ですか?

もしそうなら、それは良いことですか?

私はそれらを選択した後に集計する方が良いでしょうか?

答えて

3

次のクエリでは、アイテムの合計数とuser_id = NULLが追加された行が表示されます。

SELECT user_id, COUNT(id) n_items 
FROM items 
GROUP BY user_id WITH ROLLUP 

Mysql docs on GROUP BY modifiersも参照してください。

+0

パーフェクト!私はそれを推測したことはありませんでした... –

+0

それはまた私が見つけた時にグーグルと読書の一日を取った...私はstackoveflowを知らなかった:) –

1

このようなもの...?

SELECT COUNT(*) 
FROM items 
UNION 
SELECT COUNT(id) 
FROM items 
GROUP BY user_id 

次に、最初の結果が合計になり、その後の結果がグループ化された合計になります。

しかし、個人的には、あなたが言ったようにgroup byクエリを実行した後に、私はそれらを追加します。

関連する問題