2017-07-26 159 views
-1
book_id location seller daily_sales order_day Type 
ABC  1  XYZ 100   2017-05-05 Y 
ABC  1  XYZ 120   2017-05-07 Y 
ABC  1  XYZ 40   2017-02-10 Y 
ABC  1  XYZ 60   2017-02-10 N 
. 
. 
. 

我正在尝试计算每个book_id的每日销售额总和。所以基本上在上面的表格中,012到2016年10月10日的 总和将是60 + 40。在其他情况下,它将分别只有100 & 120。按列计算sql组中的总数

SELECT book_id, order_day, (SELECT SUM(daily_sales) from facts groupby order_day, book_id, seller) as daily_sum from facts 
where location = 1 group by book_id, seller, seller, location 

我想我这样做是不正确的。

+0

什么是预期的输出? –

+0

您是否需要输出与输入表相同,并且有一列显示当天的总数?或者你想要一个不同的格式,只显示'book_id',日期和每个日期的总数?第一个输出可以通过解析SUM()函数来实现,就像在Vadym的答案中一样。第二个版本使用聚合SUM(),如K. McCollow的回答。 – mathguy

回答

0
SELECT book_id, seller, location, order_day, SUM(daily_sales) 
FROM facts 
GROUP BY book_id, location, order_day 

对于book_id,seller,location和order_day的每个组合,将获得daily_sales的总和。

0

尝试此查询:

SELECT DISTINCT 
    t.* 
FROM 
(
    SELECT 
    t.book_id, 
    t.seller, 
    t.order_day, 
    sum(t.daily_sales) over (partition by t.book_id, t.seller, t.order_day) AS result 
    FROM 
    facts t 
) t