2016-12-02 115 views
0

有2个表 - 产品及销售简单的SQL查询销量最高

Products 
prod_id 
prod_nm 



Sales 
prod_id 
cust_id 
sls_dt 
sls_amt 

编写一个查询,选择所有产品。对于每个产品,显示过去30天内的销售总额,如果在30天内未使用子查询销售,则为0。 sls_dt>现在() - -

由于不同的RDBMS有不同的日期函数,你可以通过日期,使用以下伪代码过滤器30

进出口新的SQL和IM试图像这样因为我发现这个在线。

Select prod_id, prod_nm from(
Select sls_amt 
From Sales) as t 
Where t.rank = 1 

但是,这不是'工作。任何帮助表示赞赏

+0

'使用以下伪code' ...日期函数是高度依赖RDBMS和通用的答案可能没有帮助任何人。你正在使用哪个数据库? –

+0

您可以使用以下伪代码进行日期过滤 - sls_dt> now() - 30. – pruthvi

+0

@TimBiegeleisen – pruthvi

回答

0

尝试以下:

select p.prod_id, 
    p.prod_nm, 
    sum(s.sls_amt) 
from products p 
left outer join Sales s on p.prod_id = s.prod_id 
    and s.sls_dt > now() - 30 
group by p.prod_id, 
    p.prod_nm; 
+0

这个工作的人。谢谢@Gurwinder – pruthvi