我正在尝试运行一个查询来计算每行的计数,以及使用group_concat在行内部具有某些值(以及理想情况下的百分比)的人数,问题是由于某种原因不是按预期工作。
我可以使用group_contact(count(*))吗?
答案 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 ...
...