allblueJT 2022-07-07 22:36 采纳率: 100%
浏览 64
已结题

MySQL,按周查询,结果保留没有记录的周

我想按周查询某表(存款记录)的一个属性(金额)的和,MySQL代码如下,但由于中间有些周没有记录,查询结果不会有这些周,我想像外连接一样保留这些周(对应金额即为null或0,随便),请问如何实现?
我能想到的是建一个记录了很多连续周的表,再用外连接,但感觉有点冗余;而且感觉这类问题很常见;想问一下有没有直接一点的方法

SELECT DATE_FORMAT(DEPOSIT_TIME,'%x-%v') WEEK,SUM(AMOUNT) FROM deposit GROUP BY WEEK ORDER BY WEEK;
  • 写回答

6条回答 默认 最新

  • 一把编程的菜刀 2022-07-08 09:17
    关注

    一年52周,列出来呗

    select a.click_week,ifnull(b.count,0) as count
        from (
            SELECT 0 as click_week
            union all
            SELECT 1 as click_week
            union all
            SELECT 2 as click_week
            union all
            SELECT 3 as click_week
            union all
            SELECT 4 as click_week
            union all
            SELECT 5 as click_week
            union all
            SELECT 6 as click_week
            union all
            SELECT d as click_week
            ....
            union all
            SELECT 52 as click_week
        ) a left join (
          select  week(DEPOSIT_TIME) as click_week, count(*) as count
          from deposit
          group by  week(DEPOSIT_TIME)
        ) b on a.click_week = b.click_week;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 7月17日
  • 已采纳回答 7月9日
  • 赞助了问题酬金5元 7月7日
  • 创建了问题 7月7日

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程