从日期字段中过滤每月sql中的数据

时间:2014-02-19 07:22:47

标签: mysql sql

我的表是:

customer(cid,name,city,state)
orders(oid,cid,date)
product(pid,productname,price)
lineitem(lid,pid,oid,number,totalprice)

我想创建一个视图ProductMonth (PID, ProductName, Month, QuantitySold, NumberCus­tomer, Revenue),它为每个产品和每个月提供的销售数量, 购买产品的不同客户数量和销售金额 对应于月份。

我使用extract()来获取orders.date的月份。我需要知道如何循环每个月和每个产品。我无法想出一个有效的查询。它甚至可以在MySQL中实现吗?我的意思是循环每个月的产品名称并计算总价格以及每个产品销售对整体的贡献。我知道如何针对特定产品或月份实施此功能,但不会针对每月销售的产品实施此功能。我尝试使用连接但它失败了。我需要查询以及实现它的逻辑。

1 个答案:

答案 0 :(得分:1)

这假设lineitem.number是销售单位数。

SELECT  P.pid
,p.productname
,Month=datepart(mm, O.date)
,QuantitySold = sum(L.number)
,NumberCustomer = count(distinct cid)
,Revenue = sum(L.totalprice)
FROM orders O 
JOIN customer C on C.cid = O.cid
JOIN lineitem L on L.oid = O.oid
JOIN product P on P.pid = L.pid
GROUP BY
 P.pid
,p.productname
,Month=datepart(mm, O.date)