web-dev-qa-db-ja.com

GROUP_CONCATでCOUNTを使用する

これは私のテーブルです:

id    fk_company
1          2    
2          2    
3          2    
4          4    
5          4    
6          11   
7          11   
8          11   
9          12

これは私の複雑なクエリ文字列の一部にすぎないため、必要な結果は文字列「3、2、3、1」になります。

私はこのクエリを使おうとしました:

SELECT GROUP_CONCAT(COUNT(id) SEPARATOR ", ")
FROM `table` GROUP BY fk_company;

しかし、エラーが発生しました:

エラー番号:1111

グループ機能の使用が無効です

COUNT、MAX、MIN、SUMはGROUP_CONCATでは使用できないと感じています。もしそうなら、あなたはこれを行う別の方法を知っていますか。

11
mesnicka

最初に内部選択で_GROUP BY_を使用してCOUNT()を実行してから、GROUP_CONCAT()を適用する必要があります。

_SELECT GROUP_CONCAT(cnt) cnt
  FROM
(
  SELECT COUNT(*) cnt
    FROM table1
   GROUP BY fk_company
) q
_

出力:

 | CNT | 
 ----------- 
 | 3,2,3,1 | 

これがSQLFiddleデモです

13
peterm
SELECT A,  
GROUP_CONCAT(B SEPARATOR '/') AS 'Category',  
GROUP_CONCAT(C SEPARATOR '/') AS 'ALIAS_NAME',COUNT('ALIAS_NAME') AS 'Count'  
FROM carnews  
...  
...
GROUP BY 1
ORDER BY 4 DESC  

私の場合、これはうまく機能します。

0
Mudit Gupta
select GROUP_CONCAT(counts) 
   from (
      select count(id) counts from
          table group by fk_company
   );