Получить счет в столбце - PullRequest
0 голосов
/ 17 мая 2019

Мне нужен запрос, в котором подсчитывается количество повторяющихся регионов, где дата - «апрель2018», ожидаемый вывод по запросу

Отображаемая таблица

+---------+--------------+
| region  |     Date     |
+---------+--------------+
| africa  |    april2018 |
| africa  |    may2018   |
| africa  |    may2018   |
| america |   jan2018    |
| america |   jan2018    |
| africa  |    april2018 |
| africa  |    may2018   |
| africa  |    may2018   |
| india   |    jan2018   |
| india   |    jan2018   |
+---------+--------------+    

Ожидаемый результат

+----------+---------+
|  region  |  Count  |
+----------+---------+
|  africa  |       2 |
|  america |       0 |
|  india   |       0 |
+----------+---------+

Ответы [ 4 ]

1 голос
/ 17 мая 2019

использовать case when с количеством

select region, coalesce(count(case when Date = 'april2018' then 1 end),0) as count
from tablname
group by region
0 голосов
/ 18 мая 2019

Вот еще один простой подход:

SELECT Region, SUM(Date='april2018') as Count
FROM TableName
GROUP BY Region;
0 голосов
/ 17 мая 2019

Я добавил первичный ключ, чтобы получить ожидаемый результат

mysql> select * from region_date;
+---------+-----------+----+
| region  | date      | id |
+---------+-----------+----+
| africa  | april2018 |  1 |
| africa  | may2018   |  2 |
| africa  | may2018   |  3 |
| america | jan2018   |  4 |
| america | jan2018   |  5 |
| africa  | april2018 |  6 |
| africa  | may2018   |  7 |
| africa  | may2018   |  8 |
| india   | jan2018   |  9 |
| india   | jan2018   | 10 |
+---------+-----------+----+
10 rows in set (0.00 sec)

mysql> select count(sub), inn.region from 
        (select 
          i.region, 
          (select s.date from region_date s where   s.id = i.id  and s.date = 'april2018' limit 1)  as sub, 
          date 
         from region_date i) as inn group by region;
+------------+---------+
| count(sub) | region  |
+------------+---------+
|          2 | africa  |
|          0 | america |
|          0 | india   |
+------------+---------+
3 rows in set (0.00 sec)

0 голосов
/ 17 мая 2019

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

SELECT Region, COUNT(*) AS Cnt
FROM Region
WHERE Date = 'April2018'
GROUP BY Region
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...