当前位置:首页 » 编程语言 » 获取每组第一名的sql
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

获取每组第一名的sql

发布时间: 2022-08-08 03:18:22

⑴ 求sql语句->有N多的部门,取出每个部门销售冠军和季军

SELECT *
FROM test a
WHERE (sell IN
(SELECT TOP 2 sell
FROM test
WHERE part = a.part
ORDER BY sell DESC))
ORDER BY part, sell DESC

sqlserver 亲测 没有问题,楼主给分吧,呵呵
mysql啊,看了下文档,top语句在mysql中可以用limit代替。
我这边没有mysql测不了,你看下这样行不行:
SELECT *
FROM test a
WHERE (sell IN
(SELECT sell
FROM test
WHERE part = a.part
ORDER BY sell DESC limit 2))
ORDER BY part, sell DESC

limit前参应该不用指定,如果不行,试试:
SELECT *
FROM test a
WHERE (sell IN
(SELECT sell
FROM test
WHERE part = a.part
ORDER BY sell DESC limit 0,2))
ORDER BY part, sell DESC

⑵ sql数据库怎么实现分组并取每组的前1条语句,按日期排序

select * from
(
select row_number() over(partition by '分组' order by '日期') as rownum -- 排序并分组
, * -- 所需显示的字段
from 表
) as T
where T.rownum = 1

对每组的数据按日期排序并加上行号
取出时只取行号为1,也就是第一条数据。

⑶ pl/sql function取出每个课程的第一名的姓名与分数

自定义的函数不能在select中用啊,可以用call 或者 exec调用

⑷ sql取出每个分组的前几条

一个简单的方法就是排序之后给它分配序号,根据序号去找前几条

select*

from(select公司,人数,

--按人数从多到少分配序号,不同公司会重1开始

rank()over(partitionby公司orderby人数desc)asxh

from公司档案)asA

wherexh<=2--取前几位就写几

orderby公司,人数desc

排序效果如下

⑸ sql按字段分组,并且找出每组的第一条数据

不知道你什

么数据库,给出sqlserver和oracle的

select星期,字母
from
(selectrank()over(partitionby星期orderby字母desc)id,*
from表)t1
whereid=1

或者

select星期,max(字母)
from表
groupby星期

⑹ 如何用SQL SERVER取分组数据第一条

根据table1_id进行分组所得结果:

select * from (select a.id as a_id,a.name,a.time,a.content,b.id as b_id,b.user from table1 a inner join table2 b on a.id = b.table1_ID) new_tbl where b_id in (select min(id) from table2 group by table1_ID)

(6)获取每组第一名的sql扩展阅读:

注意事项

在SQL Server数据库中,使用top关键字:SELECT TOP number|percent column_name(s) FROM table_name

在MySQL数据库中,使用LIMIT关键字:SELECT column_name(s) FROM table_name LIMIT number

例子:SELECT * FROM Persons LIMIT 1

select bookName from book where price > 20 limit 1;

limit 1;
or
limit 0,1;

在Oracle数据库中,使用ROWNUM关键字:

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

例子:SELECT * FROM Persons WHERE ROWNUM <= 1

⑺ 如何找出每个班级的第一名

可以通过班级进行分组,分组函数“group by ”,可以通过max函数获取到某列的最大值。
sql:select class ,max(score) from tablename group by class;
解释:上面语句的意思就是说通过班级分组后,查询出所有的班级和班级中的最高分