Я новичок в oracle sql. Я пытаюсь понять следующий код. Может ли кто-нибудь объяснить в простых выражениях, как min (amt) сортирует результаты в порядке возрастания? Я думал, что min() возвращает одно значение. Почему max (amt) дает точные результаты? Сортировка по min() дает результаты, которые я хочу, но пытаюсь понять, как это делается.заказать по min() в sql
select (case when amt > 200 then '>200'
when amt > 100 then '>100'
else '>50'
end)
count(distinct orderno)
from xyz
where order_date between '...' and sysdate
group by (case when amt > 200 then '>200'
when amt > 100 then '>100'
else '>50'
end)
order by min(amt)
Result:
> 50
>100
>200
У вас есть группа пунктом в этом запросе, в противном случае, вы должны получить 'ORA-00937: не одногрупповая групповая функция'. Пожалуйста, покажите свой фактический запрос, если он не слишком длинный, или придумайте какой-нибудь тестовый пример, который мы можем исследовать. –
'min (amt)' упорядочивает минимальное значение 'amt' в любой группе, которую вы указали. Я думаю, вы могли бы смириться с 'min' и' max' с направлением сортировки ('asc' и' desc'). – Dean
Я голосую @Dean FTW. – paqogomez