omoonのブログ

旅の思い出を写真とともに書いてみるか。

今日知った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

これで

  • 太郎くんは良く食べる
  • 花子さんは女の子にしては良く食べる
  • 二郎くんはとろサーモンが大好き

ということが一目瞭然ですね。

それでは。