【发布时间】:2021-03-14 15:02:19
【问题描述】:
我有一张这样的桌子:
SELECT
s.date,
s.orderid,
s.num1,
s.num2,
s.sales,
s.price
FROM sales AS s
导致
date | orderid | num1 | num 1 | sales | price
2020-11-01 | 1 | a | aa | 1 | 10
2020-11-01 | 8 | k | kk | 1 | 10
2020-11-02 | 1 | a | aa | -1 | 10
2020-11-01 | 2 | b | bb | 2 | 8
2020-11-01 | 3 | c | cc | 1 | 10
2020-11-01 | 3 | c | cc | 2 | 9
2020-11-04 | 18 | u | uu | 5 | 2
“orderid”和“num1”只能出现一次,否则返回(第二个条目的“sales”为-1,否定之前的sales。 所以,我需要完全删除这些条目(而不是保留一行)。否则,“orderid”没有意义,也不需要。
我想按“date”、“num1”和“num2”分组,汇总所有销售额并获得平均价格,同时删除一起出现多次的orderids+num1。
最终结果应该是:
date | orderid | num1 | num 1 | sales | price
2020-11-01 | 8 | k | kk | 1 | 10
2020-11-01 | 2 | b | bb | 2 | 8
2020-11-01 | 3 | c | cc | 3 | 9.5
2020-11-04 | 18 | u | uu | 5 | 2
如何使用 Groupby 做到这一点?到目前为止,我有这个:
SELECT
s.date,
s.num1,
s.num2,
SUM(s.sales),
AVG(s.price)
FROM sales AS s
GROUP BY s.date, s.num1, s.num2
【问题讨论】:
标签: sql oracle group-by having