MYSQL按 "gaps"填充组

标签 mysql sql group-by left-join

我正在尝试通过使用辅助表来填补使用组后的空白,你能帮忙吗?

处理没有订单的日子的辅助表

date        quantity
2014-01-01  0
2014-01-02  0
2014-01-03  0
2014-01-04  0
2014-01-05  0
2014-01-06  0
2014-01-07  0

按“订单”表的结果分组

date        quantity
2014-01-01  7
2014-01-02  1
2014-01-04  2
2014-01-05  3

将“orders”表与“aux 表”连接所需的结果

date        quantity
2014-01-01  7
2014-01-02  1
2014-01-03  0
2014-01-04  2
2014-01-05  3
2014-01-06  0
2014-01-07  0

最佳答案

在不知道如何创建group by result表的情况下,您在外连接中寻找什么,也许使用coalesce。像这样的事情:

select distinct a.date, coalesce(b.quantity,0) quantity
from aux a 
    left join yourgroupbyresults b on a.date = b.date

请注意,您可能需要也可能不需要distinct——取决于您的数据。

<小时/>

编辑,根据您的意见,这应该有效:

select a.date, count(b.date_sent)
from aux a
    left join orders b on a.date = date_format(b.date_sent, '%Y-%m-%d')
group by a.date

关于MYSQL按 "gaps"填充组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59118419/

相关文章:

mysql查询执行时间太长

php - 如何从 PHP 7 中的嵌套包含文件中跳出 while 循环?

mysql - 具有多个一对多的 3 个表的 SQL JOIN

sql - 如何在 postgresql 上创建类 SET 类型

mysql - T-SQL 分组/合并记录

python - 从 Pandas 数据框中的前一行中减去日期时间值

mysql - 检查 MySQL 事务中的错误

mysql - Hibernate/mysql - 批量更新返回意外的行数和 ascii 字符

php - sql - 按其他关系计数排序查询

mysql - 对多列进行分组时如何选择最大值或最后一条记录?