大佬教程收集整理的这篇文章主要介绍了SQL - 按两个不同的值分组,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个样本数据:
create table teste
(`leadID` INT,`dates` datetiR_441_11845@E)
;
INSERT INTO teste
(`leadID`,`dates`)
VALUES
(1,'2021-01-18 13:03:36'),(2,'2021-01-11 19:40:47'),(3,'2021-01-11 13:28:54'),(4,'2021-01-11 19:44:16'),(5,'2021-01-11 13:28:24'),(6,'2021-01-11 13:29:28'),(7,'2021-01-11 18:17:26'),(8,'2021-01-11 19:40:22'),(9,'2021-01-11 18:35:32'),'2021-01-12 17:49:03')
;
我想执行一个查询,返回按天分组的 LeadID 的不同计数。在某些情况下,由于某些误用而重复了 LeadID,我想对其进行过滤。
当我运行此查询时:
SELECT date(teste.dates) AS DataCadastro,COUNT(disTinCT teste.leadID) AS Contagem
FROM teste;
它返回 9,这是不同的 LeadID。
DataCadastro | 传染 |
---|---|
2021-01-18 | 9 |
但是当我运行这个查询时,按日期分组:
SELECT date(teste.dates) AS DataCadastro,COUNT(disTinCT teste.leadID) AS Contagem
FROM teste
GROUP BY date(teste.dates);
它返回:
DataCadastro | 传染 |
---|---|
2021-01-11 | 8 |
2021-01-12 | 1 |
2021-01-18 | 1 |
我知道该组返回所有寄存器,因为我对同一个 ID 有不同的日期,当我对它进行分组时,ID 是否相同并不重要。但是我该如何解决呢?如何通过仅获取不同的 ID 并获取它的第一个/最后一个注册日期来告诉查询我想要该组?
我想要的输出是这样的:
DataCadastro | 传染 |
---|---|
2021-01-11 | 8 |
2021-01-18 | 1 |
或
DataCadastro | 传染 |
---|---|
2021-01-11 | 7 |
2021-01-12 | 1 |
2021-01-18 | 1 |
您可以为每个 ID 计算最早天:
SELEct min_date,count(*)
from (SELEct id,min(datE) as min_date
from t
group by id
) t
group by min_date
以上是大佬教程为你收集整理的SQL - 按两个不同的值分组全部内容,希望文章能够帮你解决SQL - 按两个不同的值分组所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。