PostgreSQL:选择列并从组中排除
这个问题可能以不同的形式提出,但我找不到答案 我有表PostgreSQL:选择列并从组中排除,postgresql,Postgresql,这个问题可能以不同的形式提出,但我找不到答案 我有表订单 日期、订购数量、单位成本、产品型号、标题 我想: 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 但它也需要按标题进
订单
日期、订购数量、单位成本、产品型号、标题
我想:
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
但它也需要按标题进行分组
我的问题是我的标题随着时间的推移而改变。我想保留标题,只需显示/选择最新的标题
,而不按标题分组,这会使数字有所不同。您可以使用子查询获取最新的标题:
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行(以防万一)。您可以使用子查询获取最新的标题:
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行(以防万一)。product\u title在功能上取决于型号,所以它首先不应该在这里。@wildplasser主要是,但是标题会随着时间的推移而变化,所以我们在这里跟踪这些变化。你能告诉我如何获取最新的标题吗?不,我不能。如果我有两个订单,你能定义最近的一次吗;本月1份,上月1份。最新的标题可能与第一个标题略有不同。对于这个特定的报告,我想对销售进行分组,但显示1个标题,第一个或最近的。产品标题在功能上取决于型号,所以它不应该放在第一位。@wildplasser它主要是,但标题会随着时间的推移而变化,所以我们在这里跟踪这些变化。你能告诉我如何获取最新的标题吗?不,我不能。如果我有两个订单,你能定义最近的一次吗;本月1份,上月1份。最新的标题可能与第一个标题略有不同。对于这个特定的报告,我想对销售进行分组,但显示1个标题,第一个或最近的标题。