2014-12-18 3 views
0

Я пытаюсь запустить запрос, который будет подсчитывать количество отсчетов для каждой строки и количество людей, имеющих какое-то значение (и в идеале процентное число рядом) внутри строк с помощью group_concat, проблема что по какой-то причине не работает должным образом.count in group_concat не работает как ожидалось

Могу ли я использовать group_contact (count (*))?

+2

[Если можно создать живой пример] (http://stackoverflow.com/help/how-to-ask) .. проблемы, с которой вы можете ссылаться (например, на http://sqlfiddle.com/ или http://jsbin.com/), тогда сделайте это - но также включите код в свой вопрос. Не каждый может получить доступ к внешним сайтам, и ссылки могут сломаться с течением времени. – GolezTrol

+0

добавлен код как предложено – peterpeterson

ответ

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 ... 
... 
+0

Ну, сделайте это на представлении просто, но, к сожалению, это не вариант для меня в этом случае. Должно быть возможно сделать это с помощью запроса, если нет, мне придется создать процедуру хранилища, но я предпочел сделать это с помощью одного запроса. – peterpeterson

+1

Ну, я могу попробовать. Просьба предоставить образцы данных. – fancyPants

+0

есть вопрос, а также есть sqlfiddle. спасибо – peterpeterson

Смежные вопросы