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

标签 mysql sql

我的表是:

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

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

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

最佳答案

这假设 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)

关于mysql - 从日期字段中过滤每个月的sql数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21873686/

相关文章:

mysql - 如何同步2个数据库中的产品库存。 Mysql和MSSQL实时

java - 从两个表中获取相似的列名和计数

mysql - "if"查询mysql

SQL - IN 运算符获取位置

MySQL:获取组列表及其成员总数

php - 如何在 Laravel 中使用多个数据库

SQL还是捷径?

MySQL查询超过3个表

mysql - 字段列表中的列 ' ' 不明确

php - 如何从另一个页面获取$_GET url参数