#mysql #sql
#mysql #sql
Вопрос:
Я хотел бы создать таблицу, подобную результату, с помощью mysql, чтобы я мог использовать данные для построения диаграмм слияния, чтобы у меня были итоговые значения по оси y и client_types по оси x, таким образом, что-то вроде этого
n 1' '
' ' '
10 ' ' ' ' '
' ' ' ' ' '
0 ' ' ' ' ' ' '
'__'___'___'__'___'___'___
A B C D E All
Мой запрос, как показано ниже, возвращает
SELECT DISTINCT(COUNT('client_type')) AS Total, client_type FROM `clients` GROUP BY client_type
ВОЗВРАТ
Total Client_type
18 A
26 B
16 C
101 D
2 E
Итак, что я хочу, так это иметь возможность добавлять в тип клиента ‘All’ и sum (Total) таким образом
Total Client_type
18 A
26 B
16 C
101 D
2 E
168 All
Предложения
Ответ №1:
Вы хотите rollup
:
SELECT COUNT(*) AS Total, coalesce(client_type, 'All')
FROM `clients`
GROUP BY client_type with Rollup;
Примечание: выражение DISTINCT(COUNT('client_type'))
близко к бессмысленному. Вам в принципе никогда не нужно select distinct
с a group by
. distinct
Применяется ко всем значениям в select
, поэтому скобки вокруг count('client_type')
ничего не делают. И вы считаете константу, строку 'client_type'
, когда, возможно, вы намереваетесь столбец.