- 締切済み
売上げ件数順のSQLについて
売上げ件数順のSQLについて ユーザーごとに、日別の売上データを下記のSQLで集計しています。 これを、グループ化を保ったまま、全期間での売上げ件数合計の多いユーザー順に並び替えるにはどうすればよいでしょうか? select w.user_id as user_id, DATE_FORMAT(w.created_at,"%Y-%m-%d") as days,w.type as type, count(*) as num from uriage w group by user_id,type,days order by user_id,days,type; +---------+------------+-----------------+-----+ | user_id | days | type | num | +---------+------------+-----------------+-----+ | 1 | 2010-10-15 | カテゴリ1 | 1 | | 1 | 2010-10-15 | カテゴリ2 | 1 | | 1 | 2010-10-15 | カテゴリ3 | 5 | | 1 | 2010-10-16 | カテゴリ2 | 1 | | 1 | 2010-10-16 | カテゴリ3 | 1 | | 2 | 2010-10-15 | カテゴリ1 | 1 | +---------+------------+-----------------+-----+
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
相変わらず質問の意味がわからない。 もう少し、どういう元データからどういう結果を得たいのか明確にした方がいいです 前回の補足から推測するに・・・ たんにuser_id,days,typeの組合せの数でカウントしその多い順(つまりnum?)で ソートすればいいということであればorder by の先頭にnumのDESCを つけるだけじゃないですか? SELECT user_id,days,type,count(*) as num FROM uriage GROUP BY user_id,days,type ORDER BY num DESC ,user_id ASC,days ASC,type ASC
- yambejp
- ベストアンサー率51% (3827/7415)
質問の意味がよくわからないのですが、 user_idの数が多い順、日付順、タイプ順に売上データをソートして表示するということでしょうか? SELECT user_id,days,type FROM uriage INNER JOIN ( SELECT user_id,count(*) AS datas FROM uriage GROUP BY user_id ) AS SUB USING(user_id) ORDER BY datas DESC ,user_id ASC,days ASC,type ASC
お礼
numが省略されていますが、count(*)ではうまくいきませんでした。 どうすればいいですか?