⑴ 求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;
解釋:上面語句的意思就是說通過班級分組後,查詢出所有的班級和班級中的最高分