以下是我们处理的数据: - 我们知道包裹ID和每个包裹ID的价格 - 这意味着我们可以通过将计数(pack_id_与包的个别价格)相乘来找到销售额 - 我们知道package_id可以在订阅表中找到,而pack_price可以在价格表中找到 - 我们应该返回pack_id排序的值。
SELECT Count(pack_id) * pack_price
FROM package
natural JOIN subscription
GROUP BY pack_id
答案 0 :(得分:0)
我认为您收到错误消息是因为您使用count(pack_id)与价格相乘,这会导致组中的聚合错误。
解决这个问题的方法是使用;用于创建组合查询:
WITH
count_packid AS
( select
count(pack_id) as packcount, pack_id from package group by pack_id),
sales_price AS
(
select pack_price, pack_id
from subscription
)
SELECT packcount * pack_price, a.pack_id
FROM count_packid a
LEFT JOIN sales_price b on a.pack_id = b.pack_id
这样你可以解决在计算中直接使用聚合函数的问题,你应该得到你需要的结果。不幸的是,我无法对此进行测试,但它可以帮助您朝着正确的方向发展。
如果要包含日期或类似内容,则必须将WHERE子句添加到相应的子查询中(即count_packid)
希望这有帮助。
答案 1 :(得分:0)
我修改了JanR查询,请注意更改
WITH
count_packid AS
( select
count(pack_id) as packcount, pack_id from package group by pack_id),
SELECT packcount * pack_price, a.pack_id
FROM count_packid a
Inner JOIN subscription b on a.pack_id = b.pack_id