繁体   English   中英

Select 与 Group By 和 Order by Date

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM