㈠ sql查詢,如何查詢一個表中第三行,第三列的數據
可以使用col_name(object_id('tablename'),3)得到第三列的名稱,然後再使用列的名稱進行查詢。不過這樣就不能直接寫成SQL了,需要構造動態SQL語句。行號應該也可以使用類似方法得到,具體什麼函數記不清了。
㈡ 用sql查詢第三名到第五名的同學,怎麼用呢
我們先分析一下,假設有一個表叫grade,裡面有一列叫A,A中記錄的是很多學生的成績,那麼我們可以採取這種辦法求出第三名學生的成績(嵌套三次查詢語句):
select min(A) AS A3 from grade where A>(select min(A) AS A2 from grade where A>(SELECT Min(A) AS A1 FROM grade))
同樣,將這個句嵌套五次就可以取出第五名學生成績:
select min(A) AS A5 from grade where A>(select min(A) AS A4 from grade where A>(select min(A) AS A3 from grade where A>(select min(A) AS A2 from grade where A>(SELECT Min(A) AS A1 FROM grade))))
最後一步,寫一個語句,取上次者之間的值,最終結果是:
select A from grade where A>=(...) and A<=(.....)
第一個括弧用步驟一的語句,第二個括弧用步驟二的語句,結果是:
select A from grade where A>=(select min(A) AS A3 from grade where A>(select min(A) AS A2 from grade where A>(SELECT Min(A) AS A1 FROM grade))) and A<=(
select min(A) AS A5 from grade where A>(select min(A) AS A4 from grade where A>(select min(A) AS A3 from grade where A>(select min(A) AS A2 from grade where A>(SELECT Min(A) AS A1 FROM grade)))))
結果經過驗證,沒有問題.
㈢ SQL 第n高查詢
逆序排序+取第n個值(從第n-1個值開始,向下取一位)
保證找不到輸出值時輸出NULL
關鍵語法:
1.select 數據項 from 表 order by 項 desc limit n-1,1
2.ifnull(判斷句,null)
做成函數便於之後使用:
CREATE FUNCTION get_NthHightest(outitermname CHAR,rankitermname CHAR,tablename CHAR,N INT) RETURNS INT
BEGIN
Declare M INT;
SET M=N-1;
IF M <0
THEN RETURN NULL;
ELSE RETURN(
SELECT IFNULL(
SELECT DISTINCT outitermname FROM tablename ORDER BY rankitermname DESC limit M,1),NULL );
);
END
㈣ 請教一個問題,SQL怎麼查詢出排名第三的人
通過一條SQL選出排列第三的所有人,我可以把思路寫給你,自己調試完善下。
第一步,從大到小選出沒有重復的分數:select DISTINCT corse from tb order by corse desc
第二步,從小到大選出前三位:select top 3 corse from (select DISTINCT corse from tb order by corse desc) order by corse
第三步,選出第三位:select top 1 corse from (select top 3 corse from (select DISTINCT corse from tb order by corse desc) order by corse)
第四步,選出所有第三名的人:select * from (select top 1 corse from (select top 3 corse from (select DISTINCT corse from tb order by corse desc) order by corse))
㈤ SQL 怎樣查詢 單科成績排名第3名的學生
寫個笨點的方法,
SELECT * INTO #TempA FROM score ORDER BY degree DESC
SELECT TOP 1 * FROM #TempA WHERE degree NOT IN(SELECT TOP 2 degree FROM #TempA )
㈥ sql查詢:部門工資前三高的員工和部門工資最高的員工
Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id 。
+------+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+------+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Randy | 85000 | 1 |
+------+-------+--------+--------------+
Department 表包含公司所有部門的信息。
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
編寫一個 SQL 查詢,找出每個部門工資前三高的員工。
例如,根據上述給定的表格,查詢結果應返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+
不妨假設e1=e2=[6,5,4,3],則子查詢的過程如下:
1、e1.Salary=3;則e2.Salary可以取4、5、6;COUNT(DISTINCT e2.Salary)=3
2、e1.Salary=4;則e2.Salary可以取5、6;COUNT(DISTINCT e2.Salary)=2
3、e1.Salary=5;則e2.Salary可以取6;COUNT(DISTINCT e2.Salary)=1
4、e1.Salary=6;則e2.Salary無法取值;COUNT(DISTINCT e2.Salary)=0
則要令COUNT(DISTINCT e2.Salary) < 3 的情況有上述的4、3、2.
也即是說,這等價於取e1.Salary最大的三個值。
㈦ sql語句求出第三到第五的工資
sql查詢員工的基本工資排名第3-5位的姓名和基本工資,select top 4 姓名,工資 from 表a where 姓名 not in (select top 2 姓名 from 表a order by 工資 desc) order by 工資 desc
查工資的方法:
1、select * from 部門
2、where not exists (select * from 員工 where 員工.部門號=部門.部門號 and 工資 <= 5000)
㈧ sql取出成績排名第一和第三的語句
你用的是什麼資料庫? select * from tablename order by 欄位 desc where 欄位= 1 or 欄位= 3 大概就是這么寫就行
㈨ 編寫一個 SQL 查詢,找出每個部門工資前三高的員工
Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id 。
+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Henry | 80000 | 2 |
| 3 | Sam | 60000 | 2 |
| 4 | Max | 90000 | 1 |
| 5 | Janet | 69000 | 1 |
| 6 | Randy | 85000 | 1 |
+----+-------+--------+--------------+
Department 表包含公司所有部門的信息。
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
編寫一個 SQL 查詢,找出每個部門工資前三高的員工。例如,根據上述給定的表格,查詢結果應返回:
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Randy | 85000 |
| IT | Joe | 70000 |
| Sales | Henry | 80000 |
| Sales | Sam | 60000 |
+------------+----------+--------+
Sql如下:
SELECT
d.Name Department,e1.Name Employee,e1.Salary Salary
FROM
Employee e1,
Employee e2 ,
Department d
WHERE
e1.DepartmentId = e2.DepartmentId
AND e1.Salary <= e2.Salary
and e1.DepartmentId=d.Id
group by e1.id
having count(DISTINCT e2.Salary)<=3
order by d.Name,e1.Salary desc
㈩ SQL查詢第三大的數值
MYSQL的查詢方法
select * from a order by b desc limit 2,1;
沒有驗證,應該可以 說下思路吧
先按照b列倒序查詢,查詢出的數據就是從大到小依次排列的,然後limit2,1意思是從第3條記錄開始取一條記錄,就是第三個了
ORACLE資料庫
select * from(select *,rownum r from a order by b desc) where r=3;