按类别对字段进行分组并按日期排列,并从另一个表进行计算

时间:2010-07-07 21:49:36

标签: sql database mysql

我有一个产品表,其中包含varchar,varchar和decimal类型的产品,类别和成本字段。

然后我有一个销售表,其字段为客户端,产品名称,数量,成本和saledate,类型为varchar,varchar,int,decimal和date。

我还有一个购买表,包括购买的字段,成本,数量和购买,类型为date,decimal,varchar和varchar。

在我的销售表中,给定记录的成本字段会自动乘以数量。

例如,如果啤酒成本为10,并且在销售啤酒数量的记录为2时,该记录的成本将自动为20。

我想要做的是,返回结果所有销售和购买自动分组。

例如,如果我在sales表中有以下数据:

productname - quantity - cost- saledate

beer          2          20    2010-07-10
beer          3          50    2010-07-11

And in the purchases table:

purchasedate - cost - quantity - purchase
2010-07-09     20     2          straws

我想显示以下输出

当月的总销售额:

productname - quantity - cost

beer          5          50

当月的购买总额

purchasedate - cost - quantity - purchase
2010-07-09     20     2          straws

我正在尝试以下内容:

Select category,SUM(Sales.Quantity),SUM(Sales.Quantity*cost) cost from 
sales,products WHERE sales.product=products.name 
AND category='food' AND month(date_field) = month(getdate()) group by category

然而,这首先不起作用,其次我认为它再次使销售表中的成本字段倍增,使其不准确。

我是否必须在产品表中包含原始成本才能满足我的需求?

我是否可以在一个查询中执行我想要的操作,可能作为联合,按照我的示例返回相应的行和列?

1 个答案:

答案 0 :(得分:0)

如果我说得对,那应该是

当月的总销售额:

SELECT s.productname, SUM(s.quantity), SUM(s.cost)
FROM sales AS s
LEFT JOIN products AS p ON s.productname  = p.name 
WHERE MONTH(s.saledate) = MONTH(NOW()) AND p.category = 'food'
GROUP BY s.productname

但我没有看到与购买表的连接