1.有一张person表,有字段id,name,sex,和score.
要求 写一sql语句查询成绩排名前三的同学,包含并列成绩,并序号显示
2.请用SQL语句统计:表中字段A的值相同,并且字段B的值也相同的记录的条数,并将统计结果按字段A的降序列出
要求 写一sql语句查询成绩排名前三的同学,包含并列成绩,并序号显示
2.请用SQL语句统计:表中字段A的值相同,并且字段B的值也相同的记录的条数,并将统计结果按字段A的降序列出
SELECT * FROM person a WHERE
(SELECT COUNT(p_id) FROM person WHERE a.p_score<p_score)<3 ORDER BY p_score DESC
这是我的表名,你改一下就行了~
第二题表示没看懂~
不知道包含重复成绩是什么意思。
是将一个分数的所有人都显示出来。
99 88 88 88 76 54 13
取前三名是取 99 88 88 还是 99 88 88 88 76
前者感觉星不动。所以....2,
select 字段A, count(字段A) from TempTable where 字段A = (select 字段A from TempTable where 字段A=字段B ) order by 字段A desc;
第一个
select identify(1,1),person.* from person order by score desc limit 3;
第二个
select 字段A,字段B,count(distinct(字段A,字段B)) as 条数 from TempTable order by 字段A desc;
2.select *,count(*) from TempTable group by A,B order by A desc;
2.select A,B,count(*) from TempTable group by A,B order by A;
已测试
CREATE TABLE `my_test` (
`a` int(20) DEFAULT NULL,
`b` int(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `my_test`(`a`,`b`) values (1,1),(1,2),(2,2),(3,3),(3,3),(3,4),(2,2),(2,3);然后执行这条sql
SELECT a,b,COUNT(a) FROM my_test WHERE a=b GROUP BY a ORDER BY a
这个就是你想要的结果
DESC
select T1.A,T1.B,count(1) from TempTable T1,
(select distinct T3.A,T3.B from TempTable T3) T2
where T1.A = T2.A
and T1.B = T2.B
group by T1.A,T1.B
order by T1.A