• 締切済み

売上げ件数順の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 | +---------+------------+-----------------+-----+

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

相変わらず質問の意味がわからない。 もう少し、どういう元データからどういう結果を得たいのか明確にした方がいいです 前回の補足から推測するに・・・ たんに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)
回答No.1

質問の意味がよくわからないのですが、 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

timegoesby1991
質問者

お礼

numが省略されていますが、count(*)ではうまくいきませんでした。 どうすればいいですか?

関連するQ&A