select
分组列1,分组列2,聚合列1,聚合列2
from表
groupby分组列1,分组列2
orderby分组列或聚合列
--------
分组查询中,做为查询结果显示的列,必须是用于分组的列,或者聚合的列
比如:sum(),count(),avg()等等
oracle 有重复值,分组取和 100
业务表很大, 不能单独举例,大体意思如下图:1以NO字段为主,进行分组。2同一个NO,会对应不同的姓名。3如果收费项目包含‘10’的话,NO字段在表中唯一,不重复。4目标语句:当收费醒目包含‘10’这一项,则统计no='1' 且 姓名=‘张三’,所有收费项目对 业务表很大, 不能单独举例,大体意思如下图:1以NO字段为主,进行分组。2同一个NO,会对应不同的姓名。3目标语句:当收费醒目包含‘10’这一项,则统计no='1' 且 姓名=‘张三’,所有收费项目对应的金额之和。
1以NO字段为主,进行分组。
select ano,sum(a金额) from table a group by ano
2同一个NO,会对应不同的姓名。
select ano,a姓名,sum(a金额) from table a group by ano,a姓名
3目标语句:当收费醒目包含‘盐’这一项,则统计no='10' 且 姓名=‘张三’,所有收费项目对
select a项目,sum(a金额) from table a where a收费项目= '1' and ano = '10' and a姓名=‘张三’ group by a项目
幸好oracle 和 sql 2005 以上版本已经有了开窗函数。我用 2005 模拟一把! ------ --声明一个临时表变量模拟你的表 declare @tb table ( id int, username nvarchar(50), nickname nvarchar(50), classid int ) insert into @tb(id,username,nickname,classid) select '1','1','①','11' union all select '2','2','②','22' union all select '3','11','①①','11' union all select '4','22','②②','22' union all select '5','111','①①①','11' select id,username,nickname,classid from ( SELECT id,username,nickname,classid,ROW_NUMBER() OVER(PARTITION BY classid ORDER BY id ) AS Row FROM @tb ) M where Row<3 ----------- 执行结果 id username nickname classid 1 1 ① 11 3 11 ①① 11 2 2 ② 22 4 22 ②② 22
以上就是关于sql分组查询(mysql分组查询)全部的内容,包括:sql分组查询(mysql分组查询)、谁能帮忙教教mysql数据库的分组查询呀,最好举例几张表,给出查询结果,并详细说明下哈、MySQL中,按照ID字段分组后,查询出最近的10条数据,按照创建时间的倒序排列。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)