Многократный выбор с той же таблицей в MySQL не работает
У меня проблема с множественным выбором моей базы данных. Мне нужно сделать выборку, которая возвращает вид таблицы с некоторыми обработанными данными, и ее нужно упорядочить по дням месяца. Чтобы сделать это, я использую вопрос множественного выбора mysql. Это мой код:
SELECT
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 AS 'Total',
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 and `status` = 0 and `status_cancel` = 0 AS 'Open',
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 and `status_cancel` = 1 AS 'Cancel',
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 and `date_finish` is not null and `status_cancel` = 0 AS 'Finish',
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 and `result` >= 0 and `date_finish` is not null and `status_cancel` = 0 AS 'Win',
(SELECT COUNT( * ) FROM `table` WHERE `type`=1 and `result` < 0 and `date_finish` is not null and `status_cancel` = 0 AS 'Loss'
Теперь он возвращает сумму всех строк в моей таблице, но я не могу этого сделать, чтобы вернуть данные сгруппированные по дням, помогите мне, пожалуйста!
Результат должен быть таким:
1 ответ
Решение
Я думаю, вы говорите, как я могу сгруппировать по дате, когда все мои запросы составляют подзапросы. Я изменил бы это, чтобы быть заявлениями случая для этого. Попробуйте что-то вроде этого
SELECT DATE(date_finish) as `date`, count(*) as 'Total',
SUM(CASE WHEN `status` = 0 AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Open',
SUM(CASE WHEN `status_cancel` = 1 THEN 1 ELSE 0 END) as 'Cancel',
SUM(CASE WHEN `date_finish` is not null and `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Finish',
SUM(CASE WHEN `result` >= 0 AND `date_finish` is not null AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Win',
SUM(CASE WHEN `result` < 0 AND `date_finish` is not null AND `status_cancel` = 0 THEN 1 ELSE 0 END) as 'Loss'
from `table`
WHERE `type` = 1
group by DATE(date_finish)