可能以不同的格式提出了这个问题,但我找不到答案。
我有桌子orders
date, quantity_ordered, unit_cost_cents , product_model_number, title
我想:
SELECT
model_number,
title,
SUM(unit_cost_cents / 100.00 * quantity_ordered) as total
FROM orders
GROUP BY model_number
HAVING SUM(quantity_submitted) > 0
ORDER BY total DESC
但是它也需要按title
进行分组。
我的问题是我的title
会随着时间变化。我想保留标题,只显示/选择最新的title
,而不按标题分组,这会使数字不同。
答案 0 :(得分:1)
您可以使用子查询来获取最新标题:
SELECT
model_number,
(select max(title) from orders where date = (
select max(date) from orders where model_number = o.model_number)
) title,
SUM(unit_cost_cents / 100.00 * quantity_ordered) as total
FROM orders o
GROUP BY model_number
HAVING SUM(quantity_submitted) > 0
ORDER BY total DESC
我使用select max(title)
而不是select title
来确保子查询不会返回超过1行(以防万一)。
答案 1 :(得分:1)
SELECT
o.model_number
, om.title
, SUM(o.unit_cost_cents / 100.00 * o.quantity_ordered) as total
FROM orders o
JOIN (SELECT model_number, title
,row_number() OVER (PARTITION BY model_number ORDER BY zdate DESC) AS rn
FROM orders) om
ON om.model_number=o.model_number AND om.rn=1
GROUP BY 1,2
HAVING SUM(o.quantity_submitted) > 0
ORDER BY 3 DESC
;