今日知ったSQL関数、GROUP_CONCAT
今日はMySQLのお話。
例えばこういうテーブル(shusi)があったとして
name neta ----- ------------- 太郎 ハマチ 太郎 ウニ 花子 かにみそ 二郎 とろサーモン 太郎 エビ 花子 たまご 太郎 イカ 二郎 とろサーモン 花子 あじ 花子 いくら 太郎 あじ 太郎 いわし 花子 こはだ 太郎 とろサーモン 太郎 大トロ 二郎 とろサーモン
これを
name count netas ----- ------ ------------- 太郎 8 あじ/いわし/とろサーモン/イカ/ウニ/エビ/ハマチ/大トロ 花子 5 あじ/いくら/かにみそ/こはだ/たまご 二郎 3 とろサーモン/とろサーモン/とろサーモン
みたいにしたい。
GROUP_CONCATというのがあるんですね。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.19.1 GROUP BY (集約) 関数
SELECT name, count(name) as num, GROUP_CONCAT(neta order by neta separator '/') as netas FROM sushi GROUP BY name ORDER BY num DESC
これで
- 太郎くんは良く食べる
- 花子さんは女の子にしては良く食べる
- 二郎くんはとろサーモンが大好き
ということが一目瞭然ですね。
それでは。