【发布时间】:2013-11-26 21:10:29
【问题描述】:
好吧,假设我有一个“product_catalog”和“orders”表。每个订单都有 product_catalog_id 作为外键。我想作为查询结果返回的是 product_code(与特定 product_catalog_id 关联的产品名称)+ 每个 product_code 已订购数量的计数。使用这样的东西(Oracle SQL)就很容易了:
SELECT pc.product_code,
COUNT(*) as count
FROM orders o
join product_catalog pc on pc.product_catalog_id = o.product_catalog_id
GROUP BY pc.product_code
ORDER BY count DESC;
但我还想打印订单表中的各种信息,例如该产品代码的所有每月费用总额。使用这样的东西似乎很容易:
(o.monthly_base_charge*count(*)) as "Monthly Fee"
但问题在于,随着时间的推移,同一个 product_code 会产生不同的月费。如果我添加上面的行并将“o.monthly_base_charge”添加到 group by 语句中,那么它将为该 product_code 的每个定价变化打印出一个唯一的行。我如何让它忽略这些价格变化,只将每个条目与该产品代码相加?
【问题讨论】:
-
你试过
sum(o.monthly_base_charge) as "Monthly Fee"吗? -
sum 在这种情况下似乎与 (o.monthly_base_chargecount()) 与“月费”完全相同
-
@halfbit 是的,抱歉,一旦我按声明从组中取出每月基本费用,这确实有效。不幸的是,我不能给你支票,因为它只是一个评论:/