首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql按周分组

问mysql按周分组
EN

Stack Overflow用户
提问于 2011-07-15 16:40:08
回答 4查看 26.9K关注 0票数 9

我有一张有以下字段的表格:

  • id
  • amount_sale
  • the_date (unix时间戳integer)
  • payment_type (可以是现金,也可以是帐户)

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

示例:

代码语言:javascript
复制
week 1 = $26.00  
week 2 = $35.00  
week 3 = $49.00

等等,我正在使用这个查询,但它不起作用:

代码语言:javascript
复制
  SELECT SUM(`amount_sale`) as total 
    FROM `sales` 
   WHERE `payment_type` = 'Account' 
GROUP BY WEEK(`the_date`)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-15 16:45:07

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

代码语言:javascript
复制
 SELECT SUM(`amount_sale`) as total 
FROM `sales` 
WHERE `payment_type` = 'Account' 
GROUP BY WEEK(FROM_UNIXTIME(`the_date`))  

更新

另外,您可能需要输出周数,

代码语言:javascript
复制
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`))
票数 35
EN

Stack Overflow用户

发布于 2011-07-15 16:48:54

还可以选择查询中的周数,如下所示:

代码语言:javascript
复制
  SELECT SUM(`amount_sale`) as total, WEEK(`the_date`) as week
  FROM `sales` 
  WHERE `payment_type` = 'Account' 
  GROUP BY week ORDER BY week ASC

如果您有数年的时间,您也可以从the_date中选择年份,并在此基础上订购,例如

代码语言:javascript
复制
  ORDER BY week ASC, year ASC
票数 5
EN

Stack Overflow用户

发布于 2011-07-15 16:42:57

带上你的date和get the week

代码语言:javascript
复制
SELECT DATEPART( wk, getdate())  --this is assuming SQL server

然后group在那上面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6710342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档