问题描述
以下代码将一个充满日期的表与一个具有“ X”日期注册表的表连接起来。
SELECT
d.date as 'fecha',IFNULL(q.name,0) as 'nombre'
FROM dates d
LEFT JOIN quarantine_registry q
ON d.date = q.change_date where d.date <= CURDATE() order by d.date desc
输出类似于:
fecha - nombre
2020-09-08 - 0
2020-09-07 - ggg
2020-09-07 - dwdw
2020-09-07 - test
2020-09-07 - Uuu
2020-09-07 - aaaacdac
2020-09-07 - asaaws
2020-09-07 - dwdwdw
2020-09-07 - vsed
2020-09-07 - ppp
2020-09-07 - test
2020-09-07 - Ygg
2020-09-07 - Cc
2020-09-07 - 0
...
我忘记了:我只想加入quarantine_registry中具有change_type ='add'
的注册表谢谢您的时间
解决方法
我该如何计算每个日期拥有的注册表数量并按日期分组?
您似乎想要聚合:
select d.date,count(q.change_date) cnt
from dates d
left join quarantine_registry q on d.date = q.change_date
where d.date <= current_date
group by d.date
基本上,查询从日期表开始,并尝试带入相应的注册表行。然后按日期对数据集进行分组,我们计算在注册表中找到了多少行(如果没有匹配的行,则得到0
的计数)。
我猜null不算
SELECT
d.date as 'fecha',count(*)
FROM dates d
LEFT JOIN quarantine_registry q
ON d.date = q.change_date where d.date <= CURDATE()
where q.name is not null
group by d.date
order by d.date desc
,
SELECT d.date AS 'fecha',count(id) AS registeries_count
FROM dates d
LEFT JOIN quarantine_registry q ON d.date = q.change_date
WHERE d.date <= CURDATE()
GROUP BY d.date
ORDER BY d.date DESC