Как найти максимальное значение в таблице получаемой из подзапроса

Рейтинг: 0Ответов: 1Опубликовано: 28.01.2023

В подзапросе Я получаю таблицу с группированную по дате и для каждой этой даты представляется сумма продаж в эту дату, как теперь получить отсюда дату с максимальными суммарными продажами? предполагаю что нужно где то использовать WHERE или HAVING но все попытки были неудачными(

select *
from (
    select sum(total) as sum, date
    from sale
    group by date) as t;

Есть такой вариант но я делаю один и тот же запрос дважды как это можно оптимизировать?

select date 
from 
    (select sum(total) as sum, date
    from sale
    group by date) as t 
where sum = (
select max(sum)
from (
    select sum(total) as sum, date
    from sale
    group by date) as t);

Ответы

▲ 0Принят

В MySQL это решается добавлением LIMIT в запрос и сортировкой данных в нужном направлении.

Так как вам нужно максимальное значение, то сортируем от большего к меньшему(DESC) и выводим первую запись(LIMIT 1)

select sum(total) as sumTotal, date
from sale
group by date
order by sumTotal desc
limit 1;

PS: Не используйте всевдонимы столбцов, которые совпадают с зарезервированными словами и функциями.

UPD из комментариев: Что бы вывести только дату

select date from  (
    select sum(total) as sumTotal, date
    from sale
    group by date
    order by sumTotal desc
    limit 1
);