SQL語(yǔ)句訓(xùn)練11-15

11.題目描述
獲取所有員工當(dāng)前的manager,如果當(dāng)前的manager是自己的話結(jié)果不顯示,當(dāng)前表示to_date='9999-01-01'。
結(jié)果第一列給出當(dāng)前員工的emp_no,第二列給出其manager對(duì)應(yīng)的manager_no。
CREATE TABLE dept_emp (
emp_no int(11) NOT NULL,
dept_no char(4) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));
CREATE TABLE dept_manager (
dept_no char(4) NOT NULL,
emp_no int(11) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_no));

要求不顯示自己是領(lǐng)導(dǎo)的員工,所以需要多加幾個(gè)and來(lái)判斷

select e.emp_no,m.emp_no as manager_no
from dept_manager m,dept_emp e 
where e.dept_no = m.dept_no 
and e.emp_no != m.emp_no 
and m.to_date='9999-01-01';

12題目描述
獲取所有部門中當(dāng)前員工薪水最高的相關(guān)信息,給出dept_no, emp_no以及其對(duì)應(yīng)的salary
CREATE TABLE dept_emp (
emp_no int(11) NOT NULL,
dept_no char(4) NOT NULL,
from_date date NOT NULL,
to_date date NOT NULL,
PRIMARY KEY (emp_no,dept_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));

首先進(jìn)行等值連接,然后對(duì)部門聚合后對(duì)工資屬性使用max()函數(shù)

select t2.dept_no, t1.emp_no, max(t1.salary) as salary
FROM salaries as t1 inner join dept_emp as t2
on t1.emp_no = t2.emp_no 
where t1.to_date = '9999-01-01' and t2.to_date = '9999-01-01'
group by t2.dept_no

13從titles表獲取按照title進(jìn)行分組,每組個(gè)數(shù)大于等于2,給出title以及對(duì)應(yīng)的數(shù)目t。
CREATE TABLE IF NOT EXISTS "titles" (
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);
這題就很簡(jiǎn)單了,考察了聚合函數(shù)的使用

select title,count(title) as nums 
from titles 
group by title
having count(title)>=2

14題目描述
從titles表獲取按照title進(jìn)行分組,每組個(gè)數(shù)大于等于2,給出title以及對(duì)應(yīng)的數(shù)目t。
注意對(duì)于重復(fù)的emp_no進(jìn)行忽略。
CREATE TABLE IF NOT EXISTS "titles" (
emp_no int(11) NOT NULL,
title varchar(50) NOT NULL,
from_date date NOT NULL,
to_date date DEFAULT NULL);

select title,count(distinct emp_no) as nums 
from titles 
group by title
having count(title)>=2

15
題目描述
查找employees表所有emp_no為奇數(shù),且last_name不為Mary的員工信息,并按照hire_date逆序排列
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));
就是田間多了些,沒什么難度

select * from employees
where emp_no % 2 = 1
and last_name != 'Mary'
order by hire_date desc
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容