[英]Select with a Group By and Order by Date
我的餐桌orders
:
ID (int pkey) | store_id (int fkey) | order_category (int fkey) | order_price (deci 10,2) | date (date)
1 | 123 | 5 | 10.25 | 2-11-2021
2 | 678 | 2 | 10.25 | 2-10-2021
3 | 123 | 5 | 10.25 | 2-08-2021
4 | 123 | 3 | 10.25 | 2-04-2021
5 | 678 | 2 | 10.25 | 2-01-2021
6 | 123 | 1 | 10.25 | 2-01-2021
...
我正在尝试获取每个order_category
order_price
SELECT order_price FROM orders
WHERE store_id = 123
GROUP BY order_category
ORDER BY date
但是当应用GROUP BY
时,似乎ORDER BY date
不起作用。 我想要的结果是:
1 | 123 | 5 | 10.25 | 2-11-2021
4 | 123 | 3 | 10.25 | 2-04-2021
6 | 123 | 1 | 10.25 | 2-01-2021
使用 MySQL 8.0.23
您可以尝试使用按类别分组的最大日期的子查询
select o.order_price, t.order_category
from orders
INNER JOIN (
SELECT order_category, max(date) max_date
order_price
FROM orders
WHERE store_id = 123
GROUP BY order_category
) t on t.order_category = o.order_category
AND t.max_date = o.date
ORDER BY date
使用 window 功能!
SELECT o.*
FROM (SELECT o.*,
ROW_NUMBER() OVER (PARTITION BY order_category ORDER BY date DESC) as seqnum
FROM orders o
WHERE store_id = 123
) o
WHERE seqnum = 1;
SELECT order_price,
x.order_category
FROM orders
JOIN (
SELECT order_category,
MAX(`date`) AS `date`
FROM orders
GROUP BY order_category
) AS x USING (order_category, `date`)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.