星空2020 2022-07-30 14:15 采纳率: 64.1%
浏览 58
已结题

mysql如何统计周的数据?

mysql如何统计周的数据?
需求输出结果格式:
周次 销售次数 销售量
2022-4月第4周 2 180
2022-4月第5周 1 91
2022-5月第1周 1 98
2022-5月第2周 4 275
2022-5月第3周 3 119

CREATE TABLE IF NOT EXISTS `tb1`(
   `id` INT UNSIGNED AUTO_INCREMENT,
   `qty` VARCHAR(100) NOT NULL,
   `date` DATETIME,
   PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO tb1 (qty,date) values 
('23','2022-01-23 08:00'),
('43','2022-02-22 08:20'),
('43','2022-03-13 08:20'),
('43','2022-03-23 08:20'),
('43','2022-04-23 08:20'),
('43','2022-04-23 08:20'),
('43','2022-05-23 08:20'),
('43','2022-06-23 08:20'),
('43','2022-06-03 08:20'),
('13','2022-06-13 05:00')

sql server可以通过如下方式获得,mysql是如何操作的呢?


--按周统计 (月份周次)
SELECT weekName 周次,count(1) 销售次数, sum(qty) 销售量 from (
SELECT cast(datepart(month,date) as varchar(2)) + '月第'+ cast((datepart(week,date) - datepart(week,convert(varchar(7),date,120) + '-01') + 1) as varchar(2)) + '周'  weekName,Num
FROM tb1
WHERE year(date)=year(getdate()) 
)tb
GROUP BY weekName

周次    销售次数    销售量
4月第42    180
4月第51    91
5月第11    98
5月第24    275
5月第33    119
  • 写回答

3条回答 默认 最新

  • DarkAthena ORACLE应用及数据库设计方案咨询师 2022-07-31 18:17
    关注

    mysql里用week函数就好了,如下

    select week(date),count(1),sum(qty) from tb1 group by week(date)
    

    但要注意下,每周是从周几开始,这个是通过数据库参数设置的,当然你也可以通过指定week函数的第2个参数,来灵活地确定是从周几开始算一周


    和你题目中sqlserver转换的原理一样,你题目里,实际上是算出指定日期在年的第几周,然后再算出指定日期的对应月份的1号在年的第几周,把这两个周数相减,再加1,就是这个月的第几周了


    写sql的时候,脑子里不要一直想着先学会不同数据库的函数语法,语法这东西,不会的,网上都可以搜。
    重点是理解逻辑,比如要找指定日期的所在月份的第一天,不会写,直接搜,一大把的,然后就能直接套进去。
    将自己的需求拆解成多个小需求,每个小需求都是常用的,能用简单的语言描述的,网上基本都能找到对应的解答,你所需要做的仅仅只是把每个小需求的解答像搭积木一样组合起来。

    select month(date),week(date)-week(DATE_ADD(date,interval -day(date)+1 day))+1 from tb1 
    group by month(date),week(date)-week(DATE_ADD(date,interval -day(date)+1 day))+1;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 创建了问题 7月30日

悬赏问题

  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?