在group_concat内部计数不按预期工作

时间:2014-12-18 09:44:26

标签: mysql

我正在尝试运行一个查询来计算每行的计数,以及使用group_concat在行内部具有某些值(以及理想情况下的百分比)的人数,问题是由于某种原因不是按预期工作。

我可以使用group_contact(count(*))吗?

1 个答案:

答案 0 :(得分:1)

你想做的事并非那么容易。 GROUP_CONCAT()不起作用。

我的建议,忘了GROUP_CONCAT()。数据库用于存储和获取数据,而不是很好地格式化。这是在表示层或应用程序层完成的。

所以而不是

SELECT room, course, teacher, count(*), group_concat(country) 
FROM your_table 
GROUP BY room, course, teacher;

这样做:

SELECT room, course, teacher, country, count(*)
FROM your_table 
GROUP BY room, course, teacher, country;

你会得到这样的东西:

Room A  Course A    Teacher A  ES  2
Room A  Course A    Teacher A  MX  1
Room A  Course A    Teacher A  IT  1
Room A  Course A    Teacher A  JP  1
Room B ...
...

然后将应用程序级别的计数相加。或者你可以做到

SELECT room, course, teacher, country, count(*)
FROM your_table 
GROUP BY room, course, teacher, country
WITH ROLLUP;

然后你会得到这个:

Room A  Course A    Teacher A  ES    2
Room A  Course A    Teacher A  MX    1
Room A  Course A    Teacher A  IT    1
Room A  Course A    Teacher A  JP    1
NULL    NULL        NULL       NULL  5
Room B ...
...