Есть таблица звонков:
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'
(условие по датам оставить то же)
Это возможно сделать в рамках этого же запроса?
Будем использовать не 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
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся с такой проблемой: есть строка, в который лежит разметка таблицыНеобходимо её (таблицу) отправить пользователю через FB-бота
Есть сайт на котором не могу подтвердить доступ в гугл консоли в силу того, что блокируется доступ к любым html файламК текстовым txt доступ при...
Подскажите пожалуйста, как в c# winforms vs2010 реализовать следующий элемент формы (текстовое поле с вводом текста только во вторую строку):