This is my table:
id | fk_company
-------------------
1 | 2
2 | 2
3 | 2
4 | 4
5 | 4
6 | 11
You need to COUNT()
with GROUP BY
in an inner SELECT
clause first and then apply GROUP_CONCAT()
;
SELECT GROUP_CONCAT(cnt) cnt
FROM (
SELECT COUNT(*) cnt
FROM table1
GROUP BY fk_company
) q;
Output:
| CNT | ----------- | 3,2,3,1 |
Here is SQLFiddle demo.
Just use count(id)
SELECT id, COUNT(id) as total
FROM `table` GROUP BY fk_company;
select GROUP_CONCAT(counts)
from (
select count(id) counts from
table group by fk_company
);
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
This works well in my case.
You can also achieve that by counting the number of commas (or whatever's your separator) in the GROUP_CONCAT:
SELECT (LENGTH(GROUP_CONCAT(DISTINCT fk_company))-LENGTH(REPLACE(GROUP_CONCAT(DISTINCT fk_company), ',', '')))
FROM `table`
GROUP BY fk_company