SQL練習題 答案 Part 1

2021-10-07 23:12:40 字數 3797 閱讀 6798

– 部門表

create table dept (

id int primary key primary key, – 部門id

dname varchar(50), – 部門名稱

loc varchar(50) – 部門位置

);– 新增4個部門

insert into dept(id,dname,loc) values

(10,『教研部』,『北京』),

(20,『學工部』,『上海』),

(30,『銷售部』,『廣州』),

(40,『財務部』,『深圳』);

– 職務表,職務名稱,職務描述

create table job (

id int primary key,

jname varchar(20),

description varchar(50)

);– 新增4個職務

insert into job (id, jname, description) values

(1, 『董事長』, 『管理整個公司,接單』),

(2, 『經理』, 『管理部門員工』),

(3, 『銷售員』, 『向客人推銷產品』),

(4, 『文員』, 『使用辦公軟體』);

– 1.計算員工的日薪(按30天),保留二位小數

– 2.計算出員工的年薪,並且以年薪排序 降序

– 3.找出獎金少於5000或者沒有獲得獎金的員工的資訊

– 4.返回員工職務名稱及其從事此職務的最低工資

– 5.返回工齡超過10年,且2月份入職的員工資訊 year month

– 6.返回與 林沖 同一年入職的員工

– 7.返回每個員工的名稱及其上級領導的名稱

– 8.返回工資為二等級(工資等級表)的職員名字(員工表)、部門名稱(部門表)

– 9.漲工資:董事長2000 經理1500 其他800

-- 1.計算員工的日薪(按30天),保留二位小數

select

truncate

(salary/30,

2)from emp;

-- 2.計算出員工的年薪,並且以年薪排序 降序

select

*from emp;

select salary*

12+ ifnull(bonus,0)

as 年薪 from emp order

by 年薪 desc

;-- 3.找出獎金少於5000或者沒有獲得獎金的員工的資訊

select

*from emp where bonus<

5000

or bonus is

null

;-- 4.返回員工職務名稱及其從事此職務的最低工資

-- 4.1 確定表和連線條件 2個表 員工表和職務表

select

*from emp e , job j where e.job_id=j.id;

-- 4.2 分組 統計

select j.jname ,

min(salary)

from emp e , job j

where e.job_id=j.id

group

by j.jname;

-- 5.返回工齡超過10年,且2月份入職的員工資訊 year month

select

*from emp where datediff(

now(

), joindate)

/365

>

10and

month

(joindate)

='02'

;-- 6.返回與 林沖 同一年入職的員工

-- 6.1 查詢林沖入職年份

select

year

(joindate)

from emp where ename=

'林沖'

;select

*from emp where

year

(joindate)

=(林沖入職的年份 2011);

-- 6.2 查詢對應年份的職工

# 案例結果

select

*from emp where

year

(joindate)=(

select

year

(joindate)

from emp where ename=

'林沖');

-- 7.返回每個員工的名稱及其上級領導的名稱

#自關聯查詢:自己表中的乙個字段 關聯自己表中的另外乙個字段

#select * from a inner join b on 關聯條件

# e 表示員工表 em 表示上級領導的表

select e.ename,e.mgr, em.id,em.ename from emp e

inner

join emp em on e.mgr = em.id;

-- 8.返回工資為二等級(工資等級表)的職員名字(員工表)、部門名稱(部門表)

-- 8.1 確定查詢表和連線條件 3個表

select

*from emp e , dept d ,

`salarygrade` s

where e.dept_id = d.id and e.salary between s.losalary and s.hisalary;

-- 8.2 確定顯示字段

select e.ename , d.dname , s.grade

from emp e , dept d ,

`salarygrade` s

where e.dept_id = d.id and e.salary between s.losalary and s.hisalary;

-- 8.3 確定業務條件

select e.ename , d.dname , s.grade

from emp e , dept d ,

`salarygrade` s

where e.dept_id = d.id and e.salary between s.losalary and s.hisalary

and s.grade =2;

-- 9.漲工資:董事長2000 經理1500 其他800

select

*from emp;

select

*from job;

-- 9.1 確定幾張表連線條件 2個表

select

*from emp e , job j

where e.job_id = j.id

-- 9.2 確定顯示字段

select e.ename,j.jname , e.salary

from emp e , job j

where e.job_id = j.id;

#漲工資:董事長2000 經理1500 其他800

select e.ename,j.jname , e.salary 現有的工資,

case j.jname

when

'董事長'

then e.salary+

2000

when

'經理'

then e.salary+

1500

else e.salary+

800end

as 漲工資之後

from emp e , job j

where e.job_id = j.id;

物件導向練習題答案

答案整理如下 一 類和物件 1.定義乙個類demo,其中定義乙個求兩個資料和的方法,定義乙個測試了test,進行測試。class demo public int add class test 2.定義乙個長方形類,定義 求周長和面積的方法,然後定義乙個測試了test2,進行測試。class rect...

Java String練習題及答案

1.編寫程式將 jdk 全部變為大寫,並輸出到螢幕,擷取子串 dk 並輸出到螢幕 編寫程式將 jdk 全部變為大寫,並輸出到螢幕,擷取子串 dk 並輸出到螢幕 public static void main string args 2.編寫程式將string型別字串 test 變為 tset 2.編...

SQL趣味練習題

第一中情況 create table renwu name varchar 20 not null,fahter varchar 20 insert into renwu values 小甲 大甲 insert into renwu values 大甲 老甲 insert into renwu na...