題目描述
查詢當前薪水(to_date='9999-01-01')排名第二多的員工編號emp_no、薪水salary、last_name以及first_name,不准
使用 order by
create table `employees` (
`emp_no` int(11) not null,
`birth_date` date not null,
`first_name` varchar(14) not null,
`last_name` varchar(16) not null,
`gender` char(1) not null,
`hire_date` date not null,
primary key (`emp_no`));
create table `salaries` (
`emp_no` int(11) not null,
`salary` int(11) not null,
`from_date` date not null,
`to_date` date not null,
primary key (`emp_no`,`from_date`));
輸入描述:
關於查詢第二多,方式非常多,而題目要求不准使用 order by 來排序. 分享我寫3種方式查詢第二
sql code:
方案一:
select s.emp_no,s.salary ,e.last_name from salaries s, employees e where s.to_date = '9999-01-01' and s.emp_no = e.emp_no
and s.salary = (select min(salary) from (select s.salary from salaries s where s.to_date = '9999-01-01' order by s.salary desc limit 2
) t )
order by s.salary desc limit 2
方案二:
-- 先查詢出第二多的金額
select max(s.salary) from salaries s where s.salary not in (select max(s.salary) from salaries s) and s.to_date ='9999-01-01'
-- 完整的sql
select s.emp_no,s.salary, e.last_name ,e.first_name from salaries s ,employees e where s.salary =
( select max(s.salary) from salaries s where s.salary not in (select max(s.salary) from salaries s) and s.to_date ='9999- 01-01')
and e.emp_no =s.emp_no and s.to_date ='9999-01-01'
方案三:
select s.emp_no,s.salary,e.last_name,e.first_name
from salaries s ,employees e
where to_date='9999-01-01' and e.emp_no = s.emp_no
order by salary desc
limit 1,1
方案二: 是沒有用到 order by 來排序 oracle 查詢表的基本資訊
color red 查詢某字首的所有表 color select from tab where upper tname like rp 因為oracle專案某些模組的資料結構設計沒有嚴格按照某規範設計,所以只能從資料庫中查詢資料結構,需要查詢的資訊如下 欄位名稱 資料型別 是否為空 預設值 主鍵 外...
Lua的基本資訊除錯(二)
前面說過,在我們的專案中使用的是luabind。呼叫lua函式的介面是 call function m lua,func name,player 如果func出錯了,lua會丟擲異常,c 程式捕捉到後程式可能會崩掉 就看有沒有對異常的丟擲做反映 所以光寫call function這個函式的話是看不到...
資料集的基本資訊(二)
基本的介紹一些分布指標,稀疏性,缺失值和相關性。分布指標 主要就是兩個指標 偏度和峰度 kurtosis 兩個函式計算得到 偏度 它用於衡量資料的偏倚程度,也就是資料的對稱程度。skewness insurance 4 5 當其值在 1,1 是認為沒有完全的偏移,絕對值大於1時,認為有顯著的偏移 小...