我有这张桌子:
id sale_id price
-------------------
1 1 100
2 1 200
3 2 50
4 3 50
我想要这个结果:
id sale_id price sum(price by sale_id)
------------------------------------------
1 1 100 300
2 1 200 300
3 2 50 50
4 3 50 50
我尝试了这个:
SELECT id, sale_id, price,
(SELECT sum(price) FROM sale_lines GROUP BY sale_id)
FROM sale_lines
但是得到子查询返回不同行数的错误。我该怎么做?
我希望sale_lines表的所有行选择所有字段并添加按sale_id分组的总和(价格)。
您可以使用窗口功能:
sum(price) over (partition by sale_id) as sum
如果要子查询,则需要将它们关联:
SELECT sl.id, sl.sale_id, sl.price,
(SELECT sum(sll.price)
FROM sale_lines sll
WHERE sl.sale_id = sll.sale_id
)
FROM sale_lines sl;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句