程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQL - 按两个不同的值分组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决SQL - 按两个不同的值分组?

开发过程中遇到SQL - 按两个不同的值分组的问题如何解决?下面主要结合日常开发的经验,给出你关于SQL - 按两个不同的值分组的解决方法建议,希望对你解决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,请注明来意。
标签:-