每日兩SQL(9),歡迎交流

2021-10-01 14:47:57 字數 1543 閱讀 5749

查詢所有員工的last_name和first_name以及對應的dept_name,也包括暫時沒有分配部門的員工

create table `departments` (

`dept_no` char(4) not null,

`dept_name` varchar(40) not null,

primary key (`dept_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 `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 e.last_name,e.first_name,x.dept_name 

from employees e left join

(select d.emp_no,d.dept_no,de.dept_name

from dept_emp d left join departments de

on d.dept_no = de.dept_no) x

on e.emp_no = x.emp_no

【講真最初做的時候我有想著直接進行三表的鏈結,意思就是這屆left join table1 left join table2 事實證明不行。並且當你使用left join 鏈結子表的時候,如果子表的條件是使用  from  table1,table2 where   語法上也是不允許的!】

查詢員工編號emp_no為10001其自入職以來的薪水salary漲幅值growth

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`));

select max(salary)-min(salary) growth from salaries where emp_no = 10001
【當然是一直漲薪,最大工資 - 最低工資】

SQL每日刷題 變數定義

編寫乙個 sql 查詢,來查詢與之前 昨天的 日期相比溫度更高的所有日期的 id 查詢結果格式如下例 weather id recorddate temperature 1 2015 01 01 10 2 2015 01 02 25 3 2015 01 03 20 4 2015 01 04 30 r...

SQL每日刷題 條件判斷

給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。例如 idname...

SQL每日一題 20210311

有如下一張表t0311 希望得到如下結果 即對相同的no進行轉置 create table t0311 noint name nvarchar 20 age int insert into t0311 select1,張三 18 union allselect1,李四 17 union allsel...