sql如何求分组计数之后计数的最大值

如题所述

插入测试记录:

[sql] view plain copy

insert into students values('数学','Jack','Tianjin',80)  

insert into students values('数学','Jordan','Tianjin',80)  

insert into students values('数学','James','Beijing',55)  

insert into students values('英语','Jack','Tianjin',90)  

insert into students values('英语','Jordan','Tianjin',60)  

insert into students values('英语','James','Beijing',100)  

insert into students values('语文','Jack','Tianjin',60)  

insert into students values('语文','Tom','Tianjin',77)  

insert into students values('语文','Jordan','Tianjin',68)  


想要抓取每个科目第一名的整条信息,可以使用Row_number()函数:

select  *  

from (  

select course,stu_name,city,score,ROW_NUMBER() over(partition by course order by score desc) as rn  

from students  

) a  

where a.rn <=1;    

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-16

    分组查询,查询出每组数据的数量

      select count(*) from table group by xx

    以上一个sql为结果集,查询出最大的数量

      select max(xx) from (select count(*) from table group by xx ) a

      a是取的别名

      xx是你分组的表的列名

      table换成表名

追问

题目是显示选课门数最多同学的学号和选课门数

追答

你的表结构是什么样子的,1张表吗,给我截个图也许啊

追问

追答
select * from 
(select Sno , count(*) from sc group by Sno) a
where count = (select max(count) from (select count(*) from sc group by Sno) b)

你试试,应该是可以的  

追问

a和b是什么意思?

追答

a 和b 分别是两个结果集的别名

select * from
(select Sno , count(*) from sc group by Sno) a
where count = (select max(count) from (select count(*) from sc group by Sno) b)

我把你表都弄下来了,试了挺好

追问

count 是unknown

追答

我这里是没问题的,未知列可能是没加别名的问题, 那你count(*)加上别名count(*) c

第2个回答  2015-07-16
用子查询啊
select max(a) from (select X1,X2,count(*) as a from table group by X1,X2) a
我说的绝对没问题。
子查询,X1,X2指你分组的字段,count(*) 指分组后的行数(计数),并定义别名是a
主查询 查最大的技术 注意 from 后面的子查询也定义了一个表别名追问

题目是显示选课门数最多同学的学号和选课门数

第3个回答  2015-07-16
select max(count(字段)) from 表名称 where 条件追问

报错,好像不能套用

sql如何求分组计数之后计数的最大值
[sql] view plain copy insert into students values('数学','Jack','Tianjin',80)insert into students values('数学','Jordan','Tianjin',80)insert into students values('数学','James','Beijing',55)insert into students values('英语','Jack','Tianjin',90)insert into students values('...

sql语句。。查询:分组的总和的最大值。。。
select name,count(*) from 表 group by name 这样显示出来就是 ss 3 dd 2 如果后面加上 where name='ss'那么结果就是ss 3 所以也就不存在什么max(总和)了,因为你已经锁定了name了。另外,如果要查max(总和),那么代码如下:select max(x.ACount) 最大总和 from (select name,count(*...

SQL查询取分组最大值
select t1.分类,t1.商品名称,table.库存,t1.更新时间 from (select 分类,商品名称,max(更新时间) 更新时间 from table group by 分类,商品名称 ) t1 inner join table on t1.分类=table.分类 and t1.商品名称=table.商品名称 and t1.更新时间 =table.更新时间 ...

sql语言 怎么求每组最大,就是用group by 分组后,求每组某列最大?
在分组中使用max()函数即可。例图中表格:按b列分组,求D列最大值:select b,max(d)from a group by b 如果是最小,则可以使用 min()函数

sql 怎么实现同表分组后的组数据相除拿最大的一组数据。大概sql是这 ...
平均值?用笛卡尔积 select max(c1\/convert(decimal(10,2),c2)) from (select count(cst_id) as c1 from customer where cst_created >='2012-08-01 00:00:00' and cst_created<='2012-08-31-23:59:59'and cst_mobile is not null group by cst_userid) a,(select count(b.cst_id...

求助sql分组取最大唯一值
select max(aaaa) from (select distinct (值) aaaa from 表名 group by 分组字段) T;其中distinct()过滤重复值,max()取最大值。

sql查询 分组后 每组某字段值最大的一行所有列
1、第一个方法,需要考虑ID有重复值的问题,如果最大值存在重复值,那么结果也重复。SELECT * FROM 员工信息变化表 T1 WHERE id = (SELECT Max (id) FROM 员工信息变化表 T2 WHERE T1.员工ID = T2.员工ID)2、第二个方法:该语句是在SQL Server中编写的,应该不适用于MySQ和Oracle。排...

oracle sql查询完成分组并只返回每组的最小最大值
我的测试表里有7条数据。每3条数据分作一组求最小和最大id。WITH tmp ("id") AS (SELECT 1 FROM DUAL UNION ALLSELECT 2 FROM DUAL UNION ALLSELECT 3 FROM DUAL UNION ALLSELECT 4 FROM DUAL UNION ALLSELECT 5 FROM DUAL UNION ALLSELECT 6 FROM DUAL UNION ALLSELECT 7 FROM DUAL ) ...

SQL分组查询最大值最小值
查询语句参考如下:select UserName,-- Convert(char(8),dealTm,112) as date,--日期 min(dealTm) as earliestTime ,--最大 max(dealTm) as latestTime--最小 from t2 group by Convert(char(8),dealTm,112) ,UserName

sql 分组 求出每组最大的数据有几条
--创建数据create table T([name] varchar(20),[value] int);insert into Tselect 'A',1unionselect 'A',2unionselect 'B',1--查询分组后每组中最大的数据有多少条select a.n,count(*) from(select [name] n,max([value]) mv from T group by [name]) ainner join T b on a....

相似回答