您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> 其他数据库 >> sql语句查询本周每天的数据量,如果没有该天,数据量默认为0;

sql语句查询本周每天的数据量,如果没有该天,数据量默认为0;(1/2)

来源:网络整理     时间:2018/1/27 1:03:52     关键词:

关于网友提出的“ sql语句查询本周每天的数据量,如果没有该天,数据量默认为0;”问题疑问,本网通过在网上对“ sql语句查询本周每天的数据量,如果没有该天,数据量默认为0;”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: sql语句查询本周每天的数据量,如果没有该天,数据量默认为0;
描述:

我的sql语句

SELECT 
   WEEKDAY(osr.created_date) AS weekDay, 
   IF (count(1) IS NULL, 0, count(1)) AS num 
FROM osr_work AS osr
INNER JOIN el_user AS el  ON el.id = 141
WHERE 
    osr.teacher_id = 141 AND 
    YEARWEEK(date_format(osr.created_date,'%Y-%m-%d')) = YEARWEEK(now()) 
GROUP BY WEEKDAY(osr.created_date);

结果:

0-6:分别代表周一至周日
我希望得到周一至周日所有的数据,因为周一和周五,周六,周日没有数据,就默认num为0;我该如何写,求指导!!!


解决方案1:

SELECT
    osr_weekday.weekDay,
    count(1) AS num
FROM
    osr_work osr,osr_weekday
WHERE
    WEEKDAY(osr.created_date) = osr_weekday.weekDay AND
    osr.teacher_id = 141 AND 
    YEARWEEK(date_format(osr.created_date,'%Y-%m-%d')) = YEARWEEK(now())
GROUP BY osr_weekday.weekDay


union ALL

SELECT 
    osr_weekday.weekDay ,
    0 
FROM 
    osr_weekday 
WHERE 
    osr_weekday.weekDay not in (
        SELECT 
            osr_weekday.weekDay
        FROM 
            osr_work osr,
            osr_weekday
        WHERE
            WEEKDAY(osr.created_date) = osr_weekday.weekDay AND
            osr.teacher_id = 141 AND 
            YEARWEEK(date_format(osr.created_date,'%Y-%m-%d')) = YEARWEEK(now())
        GROUP BY osr_weekday.weekDay
 )
ORDER BY weekDay

想把not in优化,折腾了半天还是老样子~有带飞的吗

解决方案2:

日期left join 你要查询的条件,然后在从这个获取的数据集中查询数据,然后判断num是不是null就行了

解决方案3:

建议建一张辅佐表 weekDay 0-6,num 全部为0, left join辅佐表就可以了。

解决方案4:

改用LEFT JOIN就行了呀。

相关图片

相关文章