1

2 列の並べ替えクエリを、内訳列を含む 1 列の並べ替えクエリに要約しようとしています。これに適切な名前があれば、それが何であるかを知っていただければ幸いです。

例:

ocean
name     | type    | colour
fishy    | salmon  | red
splishy  | salmon  | red
splashy  | salmon  | pink
sploshy  | salmon  | pink
floaty   | whale   | blue
humprhey | whale   | grey
wilson   | whale   | grey

探しています(これが何と呼ばれているのかわかりません)

type  | count | colour breakdown
salmon| 4     | 2 red, 2 pink
whale | 3     | 1 blue, 2 grey

文字列関数の使用を最小限に抑えます。


次からの進め方がわからない:

(一列ずつ並べる)

SELECT o.type, count(*)
FROM ocean o
GROUP BY `type`

type  | count
salmon| 4
whale | 3

(2列で並べる)

SELECT o.type, o.colour, count(*)
FROM ocean o
GROUP BY `type`, `colour`

type  | colour     | count
salmon| red        | 2
salmon| pink       | 2
whale | blue       | 1
whale | grey       | 2
4

2 に答える 2

2

醜い、テストされていませんが、あなたが望むことをするだけかもしれません:

SELECT type, SUM(color_count),
   GROUP_CONCAT(CONCAT(color_count, ' ', colour) SEPARATOR ', ') AS colour_breakdown
FROM (
    SELECT type, colour, COUNT(colour) AS colour_count
    FROM ocean
    GROUP BY type, colour
) AS subt
GROUP BY type
于 2013-09-06T17:45:31.317 に答える
1

2 番目のクエリをデータ ソースとして使用すると、必要なgroup_concat()出力を取得するために使用できます。

select type, sum(`count`), group_concat(colBreak separator ',') as color_breakdown
from
    (
        SELECT 
            o.type, 
            o.colour, 
            count(o.type) as `count`, 
            concat(o.colour, ' ', count(o.type)) as colBreak
        FROM ocean o 
        GROUP BY `type`, `colour`
    ) as a
group by type;
于 2013-09-06T17:45:38.230 に答える