當前位置:首頁 » 編程語言 » 獲取每組第一名的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;
解釋:上面語句的意思就是說通過班級分組後,查詢出所有的班級和班級中的最高分