Объединение запросов MySQL + group by

197
31 июля 2018, 08:30

Есть таблица звонков:

CREATE TABLE `asterisk`.`calls` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `dt_start` DATETIME NULL,
  `disposition` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));

Выполняю следующий запрос с группировкой:

SELECT 
    DATE_FORMAT(DATE(dt_start), '%d %M') AS `dt`,
    COUNT(*) AS `cnt`
FROM
    calls
WHERE
    DATE(dt_start) >= '2018-05-25'
        AND DATE(dt_start) <= '2018-06-31'
        AND disposition = 'YES'
GROUP BY DATE(dt_start)

Получаю результат:



Необходимо 3м столбцом вывести результат с условием:

disposition != 'YES'

(условие по датам оставить то же)

Это возможно сделать в рамках этого же запроса?

Answer 1

Будем использовать не COUNT(*), а SUM с условием. Так как я не знаю, что кроме "yes" есть в этой таблице, поэтому назвал альтернативу "not_yes".

SELECT
  DATE_FORMAT(DATE(dt_start), '%d %M') AS `dt`,
  SUM(CASE WHEN `disposition` = 'yes' then 1 else 0 end) AS `yes`,
  SUM(CASE WHEN `disposition` <> 'yes' then 1 else 0 end) AS `not_yes`
FROM
  `calls`
WHERE
  DATE(dt_start) >= '2018-05-25'
  AND DATE(dt_start) <= '2018-06-31'
GROUP BY `dt`;

Пример полученных данных

+------------+------+---------+
| dt         | yes  | not_yes |
+------------+------+---------+
| 01 January |    1 |       2 |
| 21 June    |    6 |       3 |
+------------+------+---------+

Также я поправил GROUP BY. Ваш запрос будет работать в старых версиях мускула, в новом будет ошибка группировки:

ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.calls.dt_start' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
READ ALSO
Как совместить эти три запроса (SQL)?

Как совместить эти три запроса (SQL)?

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

174
Таблица html в изображение

Таблица html в изображение

Столкнулся с такой проблемой: есть строка, в который лежит разметка таблицыНеобходимо её (таблицу) отправить пользователю через FB-бота

151
На сайт стоит блокировка доступа ко всем html файлам - не могу найти где

На сайт стоит блокировка доступа ко всем html файлам - не могу найти где

Есть сайт на котором не могу подтвердить доступ в гугл консоли в силу того, что блокируется доступ к любым html файламК текстовым txt доступ при...

188
Пользовательское текстовое поле

Пользовательское текстовое поле

Подскажите пожалуйста, как в c# winforms vs2010 реализовать следующий элемент формы (текстовое поле с вводом текста только во вторую строку):

191