插入测试记录:
[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;
分组查询,查询出每组数据的数量
select count(*) from table group by xx
以上一个sql为结果集,查询出最大的数量
select max(xx) from (select count(*) from table group by xx ) a
a是取的别名
xx是你分组的表的列名
table换成表名
用子查询啊
select max(a) from (select X1,X2,count(*) as a from table group by X1,X2) a
我说的绝对没问题。
子查询,X1,X2指你分组的字段,count(*) 指分组后的行数(计数),并定义别名是a
主查询 查最大的技术 注意 from 后面的子查询也定义了一个表别名
select max(count(字段)) from 表名称 where 条件