множественный счет (0 в таблице - PullRequest
2 голосов
/ 24 апреля 2019

У меня есть база данных автомобилей, и я хочу подсчитать, сколько автомобилей имеют определенный цвет.

Но я не знаю, какие цвета есть, так как их много, также есть комбинации.Так что этот код не подходит для меня:

    SELECT
        SUM(CASE WHEN colour='red' THEN 1 ELSE 0 END) red,
        SUM(CASE WHEN colour='green' THEN 1 ELSE 0 END) green
    (etc)
    FROM vehicles

Чтобы получить все цвета, я мог бы сделать:

    select distinct colour from vehicles

Но как я могу использовать эту информацию в SQL-выражении, напримертот, что выше?Я использую MS SQL Server.

Ответы [ 3 ]

4 голосов
/ 24 апреля 2019

Вы можете поместить набор результатов в строки, а не в столбцы:

SELECT colour, count(*)
FROM vehicles
GROUP BY colour;

Альтернативой является то, что вам нужно будет использовать динамический SQL или выразить набор результатов в виде XML или JSON.

2 голосов
/ 24 апреля 2019

Почему бы просто не сделать агрегацию?

select colour, count(*) as no_vehicles
from vehicles v
group by colour;
0 голосов
/ 24 апреля 2019

Будет выведен список всех цветов, найденных в настольных транспортных средствах:

SELECT distinct colour
 from vehicles

Но вы действительно хотите использовать группу по выражению , например:

SELECT
  colours
 ,count(*)  HowMany
 from vehicles
 group by
  colours

Это создаст одну строку для каждого отдельного значения в столбце colours.Это НЕ будет анализировать цветовые комбинации;«красный с черной отделкой» будет отдельным столбцом, а не +1 для красного, _1 для черного - это было бы гораздо более сложной проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...