經典SQL題庫

2022-08-18 11:36:10 字數 1719 閱讀 2338

1、查詢員工編號emp_now為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`));

解題思路:巧妙使用max和min。

select (max(salary)-min(salary)) as groeth from salaries

where emp_no='10001'

2、查詢所有員工自入職以來的薪水漲幅情況,給出員工編號emp_no以及其對應的薪水漲幅growth,並按照growth進行公升序

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

解題思路:

先用內連線構造兩張當前薪水和入職薪水表,然後再內連線這兩張表,篩選出emp_no和growth

select currentsalary.emp_no,(currentsalary.salary-beginsalary.salary) as growth

from (select e.emp_no,s.salary

from employees as e inner join salaries as s

on e.emp_no=s.emp_no where s.to_date='9999-01-01') as currentsalary

inner join(select e.emp_no,s.salary

from employees as e inner join salaries as s

on e.emp_no=s.emp_no where s.from_date=e.hire_date) as beginsalary

on currentsalary.emp_no=beginsalary.emp_no

order by growth

Oracle經典題庫大全 必看

查詢工資大於12000的員工姓名和工資 select first name last name,salary from employees where salary 12000 2.查詢員工號為176的員工的姓名和部門號 select first name last name department ...

sql經典語句

說明 複製表 只複製結構,源表名 a 新錶名 b access可用 方法一 select into b from a where 1 1 方法二 select top 0 into b from a 注意 複製的新錶中的所有欄位都將沒有預設值,即使源表中有設預設值 說明 一條sql 語句搞定資料庫分...

經典sql語句

經典sql語句大全 update 有關update,急!在oracle資料庫中 表 a id firstname,lastname 表 b id,lastname 表 a 中原來id,firstname兩個欄位的資料是完整的 表 b中原來id,lastname兩個欄位的資料是完整的 現在要把表 b中...