group by
举例1
有一张项目表
CREATE TABLE [ProjectTable] (
[ProjectID] NVARCHAR(16) NOT NULL,
[ProjectName] NVARCHAR(20) NOT NULL ON CONFLICT REPLACE DEFAULT Null,
[DeviceID] INTEGER(16) NOT NULL ON CONFLICT FAIL,
[Description] NVARCHAR(255) NOT NULL ON CONFLICT REPLACE DEFAULT 工程描述);
使用一下的sql语句
select distinct a.[ProjectID], a.[ProjectName] from projecttable as a
得出的结果为
其实想要的数据,只是不同的ProjectID所对应的ProjectName
修改sql语句为
select distinct a.[ProjectID], a.[ProjectName] from projecttable as a group by a.[ProjectID]
举例2
https://stackoverflow.com/questions/13998552/why-do-we-need-group-by-with-aggregate-functions
假如现在有一张points detail表,3个字段,user id,company id,points
CREATE TABLE PointsDetail ( UserId INT NOT NULL , CompanyId INT NOT NULL , Points INT NOT NULL );
INSERT INTO dbo.PointsDetail ( UserId , CompanyId , Points ) VALUES ( 1 , -- UserId - int 1 , -- CompanyId - int 6 -- Points - int ); INSERT INTO dbo.PointsDetail ( UserId , CompanyId , Points ) VALUES ( 2 , -- UserId - int 1 , -- CompanyId - int 7 -- Points - int ); INSERT INTO dbo.PointsDetail ( UserId , CompanyId , Points ) VALUES ( 1 , -- UserId - int 2 , -- CompanyId - int 4 -- Points - int ); INSERT INTO dbo.PointsDetail ( UserId , CompanyId , Points ) VALUES ( 2 , -- UserId - int 2 , -- CompanyId - int 3 -- Points - int );
获取所有数据
SELECT * FROM PointsDetail;
按照用户group汇总积分,得到每个用户的积分总和
SELECT UserId , SUM(Points) AS TotalPointsForUser FROM PointsDetail GROUP BY UserId;
按照公司group汇总积分,得到每个公司的积分总和
SELECT CompanyId , SUM(Points) AS TotalPointsForCompany FROM PointsDetail GROUP BY CompanyId;
举例3 特殊情况
BeneficiaryAccountID 由BeneficiaryId和CompanyId决定,所以下面的2个sql语句执行的points列是一样的
SELECT BeneficiaryAccountID , SUM(Points) AS TotalPoints FROM dbo.tbm_cti_CustomTableItem_BeneficiaryPointDetail WHERE PointsType = 1 GROUP BY BeneficiaryAccountID ORDER BY TotalPoints; SELECT BeneficiaryID , CompanyID , SUM(Points) AS TotalPoints FROM dbo.tbm_cti_CustomTableItem_BeneficiaryPointDetail WHERE PointsType = 1 GROUP BY BeneficiaryID , CompanyID ORDER BY TotalPoints;
作者:Chuck Lu GitHub |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了