Инструкция SQL для перечисления с количеством - PullRequest
0 голосов
/ 19 апреля 2019

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

Ожидаемый макет

enter image description here

Попытка подготовить приведенное ниже заявление sql, которое дает мне правильную информацию, но не в правильном формате.

SELECT COUNT(IF(city LIKE '%location 1%',1, NULL)) 'LOCATION 1',
       COUNT(IF(city LIKE '%location 2%',1, NULL)) 'LOCATION 2',
       COUNT(IF(city LIKE '%location 3%',1, NULL)) 'LOCATION 3'
FROM registrations;

Макет из приведенного выше запроса.

Текущий макет

enter image description here

Как переписатьзапрос на возврат ожидаемого макета?

Ответы [ 2 ]

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

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

SELECT 'LOCATION 1' AS location, COUNT(IF(city LIKE '%location 1%',1, NULL)) AS `count`
FROM registrations
UNION
SELECT 'LOCATION 2', COUNT(IF(city LIKE '%location 2%',1, NULL))
FROM registrations
UNION
SELECT 'LOCATION 3', COUNT(IF(city LIKE '%location 3%',1, NULL))
FROM registrations
1 голос
/ 19 апреля 2019

Использование GROUP BY:

SELECT (CASE WHEN city LIKE '%location 1%' THEN 'LOCATION 1',
             WHEN city LIKE '%location 2%' THEN 'LOCATION 2',
             WHEN city LIKE '%location 3%' THEN 'LOCATION 3'
        END) as location,
       COUNT(*)
FROM registrations
GROUP BY location;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...