mysql按周分组

sca*_*and 8 mysql sql aggregate-functions

我有一个包含以下字段的表:

  • ID
  • amount_sale
  • the_date(unix时间戳整数)
  • payment_type(可以是现金或账户)

我正在尝试创建一个查询,该查询将按一年中的每个星期对所有销售进行分组,然后在我的页面上拆分每周的amount_sales总和.

例:

week 1 = $26.00  
week 2 = $35.00  
week 3 = $49.00
Run Code Online (Sandbox Code Playgroud)

我正在使用此查询,但它不起作用:

  SELECT SUM(`amount_sale`) as total 
    FROM `sales` 
   WHERE `payment_type` = 'Account' 
GROUP BY WEEK(`the_date`)
Run Code Online (Sandbox Code Playgroud)

a1e*_*x07 32

如果存储the_date为整数,则首先需要使用FROM_UNIXTIME函数将其转换为datetime :

 SELECT SUM(`amount_sale`) as total 
FROM `sales` 
WHERE `payment_type` = 'Account' 
GROUP BY WEEK(FROM_UNIXTIME(`the_date`))  
Run Code Online (Sandbox Code Playgroud)

更新:
此外,您可能想要输出周数,

SELECT CONCAT('Week ', WEEK(FROM_UNIXTIME(`the_date`))) as week_number,
SUM(`amount_sale`) as total 
FROM `sales` 
WHERE `payment_type` = 'Account' 
GROUP BY WEEK(FROM_UNIXTIME(`the_date`))
Run Code Online (Sandbox Code Playgroud)


Eri*_*rik 5

尝试同时选择查询中的周数,如下所示:

  SELECT SUM(`amount_sale`) as total, WEEK(`the_date`) as week
  FROM `sales` 
  WHERE `payment_type` = 'Account' 
  GROUP BY week ORDER BY week ASC
Run Code Online (Sandbox Code Playgroud)

如果您有几周的时间涵盖几年,您也可以选择年份the_date并按该年份订购,例如

  ORDER BY week ASC, year ASC
Run Code Online (Sandbox Code Playgroud)