SELECT GROUP_CONCAT(DISTINCT tag) AS tags, filename, COUNT(tag) AS count
FROM dados
GROUP BY filename
ORDER BY filename
繰り返しタグなしで、各映画のすべてのタグを表示するクエリがあります。しかし今、各タグの前に繰り返し回数を表示したいと思います。このようなもの: 映画 (20)、列車 (50) など。
これにはサブクエリが必要です。
select filename, group_concat(tagstr separator ',') as tags,
count(*) as NumDistinctTags,
sum(cnt) as NumTags
from (select filename, tag,
concat(tag, ' (', count(*), ')') as tagstr,
count(*) as cnt
from dados d
group by filename, tag
) d
group by filename
order by filename
内部クエリは、各タグに必要な文字列を作成します。外側はファイル名レベルでそれらをまとめます。
group_concat のために、MySQL を使用していると仮定しています。SQL の他の方言では、concat 演算子の表現が異なる場合があります。