我正在尝试编写一个查询,以便在一天之内提取总折扣以及客户订单的收入。请注意,对于每个ship_id,将有几个项目,所以我希望得到如下的sum子句,最后,我有那个group by,我想通过ship_id对它们进行分组(这对于每个订单都是唯一的)。
我得到了2M行的结果(这可能是正确的,因为我们很大)但我不确定我的小组是否正确。如果我只把ship_id放在那里怎么办?我的查询如何理解它?
d.ship_id
,to_char(d.order_datetime,'yyyy/mm/dd hh24:mi:ss') as datetime_order
,to_char(d.order_datetime, 'D') as day_order
,to_char(d.order_datetime, 'MM') as month_order
,sum(di.discount) as discount
,sum(di.price * di.units) AS price
FROM
table1 d
JOIN
table2 di
ON
d.ship_id = di.ship_id
GROUP BY
d.ship_id
,to_char(d.order_datetime,'yyyy/mm/dd hh24:mi:ss')
,to_char(d.order_datetime, 'D')
,to_char(d.order_datetime, 'MM')
答案 0 :(得分:0)
在此查询中,您按
对结果进行分组d.order_datetime yyyy / mm / dd hh24:mi:ss(我认为这是错误的,如果你只需要按天分组)这个组按天,月,年,小时,分钟和秒分组< / p>
d.order_datetime'D'(按天分组正确)
P.S。:我不认为顾客在任何地方进行分组。
答案 1 :(得分:0)
您的查询将通过以下方式对由itens分组的所有值进行sumari:
如果你把,像:
Select ship_id, ,sum(di.discount) as discount
,sum(di.price * di.units) AS price from table1 group by ship_id
查询将返回由ship_id分组的价格和折扣,当您创建组时,必须将所有非*聚合字段放在group by上。
*聚合功能(Sum,AVG,count ...)
尝试更好地解释您的问题,让我了解您的情况(问题)。