Mysql myql:每天总结';Let’每家商店的总销售额是多少

Mysql myql:每天总结';Let’每家商店的总销售额是多少,mysql,Mysql,表格如下: mysql> DESC sell_data; +------------+--------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+------------

表格如下:

mysql> DESC sell_data;
+------------+--------------+------+-----+---------------------+----------------+
| Field      | Type         | Null | Key | Default             | Extra          |
+------------+--------------+------+-----+---------------------+----------------+
| id         | int(64)      | NO   | PRI | NULL                | auto_increment |
| name       | varchar(128) | NO   |     |                     |                |
| sell_date  | datetime     | NO   |     | 0000-00-00 00:00:00 |                |
| sell_price | double       | YES  |     | NULL                |                |
| cost       | double       | NO   |     | 0                   |                |
| store_id   | int(11)      | NO   |     | 0                   |                |
+------------+--------------+------+-----+---------------------+----------------+
我将表结构作为图片附加,看起来编辑器确实很好地支持该格式

此表中有100条记录,请求汇总每个门店在给定的一周内每天的销售总额,这意味着对于每个给定的门店id,需要7个小计,结果如下:

store 1: 122 123 124 125 126 127 128 store 2: 131 122 133 134 135 136 137
但是它只给出每个商店的总和数据,而不是每天的数据,完全停留在这里。

将总和(售价)与按商店分组的id一起使用

在我看来,您需要一个数据透视查询。 这是通过将GROUP by与SUM和CASE结合使用来实现的

SELECT
   SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Monday'
      THEN sell_price
      ELSE 0 
    END 
   ) 
    AS 
     Monday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Tuesday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Tuesday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Wednesday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Wednesday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Thursday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Thursday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Friday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Friday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Saturday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Saturday
 , SUM(
     CASE
      WHEN DAYNAME(sell_date) = 'Sunday'
      THEN sell_price
      ELSE 0 
    END 
 ) 
  AS 
   Sunday
FROM 
 [table]
WHERE
 WEEK(sell_date) = [week_number]
GROUP BY 
 store_id
ORDER BY 
 store_id ASC
你需要

 group by store_id, date(sell_date) 

您可能想将其添加到您的select to中

到目前为止您已经尝试了什么?请编辑您的问题,以包括您已经尝试了什么,以及您遇到了什么困难。现在,您的问题是要求其他人为您编写代码。另外:请学习正确的格式。我们中的两个人已经更正了您的格式,您刚刚取消了我们的编辑,并将其替换为指向表外观的图像链接。我回滚了此编辑。格式化代码很简单(编辑器中甚至有一个代码格式化辅助按钮)。任何人都不应该点击链接来查看您的模式。在我看来,您将需要某种pivot查询。顺便说一句,成本和价格永远不会翻倍。这就是十进制被发明的原因——而整数后面括号中的数字是没有意义的。省略它。这不包括个别天数。(此外,这不是一个完整的解决方案;最好留作评论,尽管OP更新了他们的问题,表明他们已经在使用
sum()
)。谢谢,我正在尝试您的查询,谢谢。
 group by store_id, date(sell_date)