group byしてcountした結果でgroup byしたいとき
たとえばガチャとかで、10種類のアイテムがあって、一番コンプしている人は誰だろう、みたいなことを調べる時は、
SELECT user_id, count(*) AS item_count FROM user_gacha GROUP BY user_id ORDER BY item_count LIMIT 1;
とかしてあげればいいのですが、何人ぐらいが何個所持しているのかなーみたいことを調べるには、count(*)でgroup byしてあげないといけないのかなーとおもって色々試したら、
SELECT ug.item_count AS item_count, count(*) AS user_count FROM ( SELECT user_id, count(*) AS item_count from user_gacha GROUP BY user_id ) as ug GROUP BY ug.item_count ORDER BY item_count;
でできるらしい。