study Python 20day

select * from employees
where hire_date =
(select max(hire_date) from employees)
select *from employees 
where hire_date=(select max(hire_date) from employees)

select *from employees 
where hire_date=(select max(hire_date) from employees)


select * from employees
where hire_date=(select hire_date from employees order by hire_date desc limit 2,1)

select *from employees 
where hire_date=(select hire_date from employees order by hire_date desc limit 2,1)

select *from employees 
where hire_date=(select hire_date from employees order by hire_date desc limit 2,1)


select s.*,d.dept_no from salaries s,dept_manager d
where s.to_date='9999-01-01'
and d.to_date='9999-01-01'
and s.emp_no=d.emp_no

 select s.*,d.dept_no from salaries s,dept_manager d 
where s.to_date='9999-01-01'
and d.to_date='999-01-01'
and s.emp_no=d,emp_no


select s.*,d.dept_no from salaries s,dept_manager d
where s.to_date='9999-01-01'
and d.to_date='9999-01-01'
and s.emp_no=d.emp_no

select employees.last_name,employees.first_name,dept_emp.dept_no 
from dept_emp inner join employees 
where dept_emp.emp_no=employees.emp_no

select employees.last_name,employees.first_name,dept_emp.dept_no
from dept_emp inner join employees
where dept_emp.emp_no=employees.emp_no


select employees.last_name,employees.first_name,dept_emp.dept_no from employees
left join dept_emp on dept_emp.emp_no=employees.emp_no

select employees.last_name,employees.first_name,dept_emp.dept_no from employees
left join dept_emp no dept_emp.emp_no=employees.emp_no


select e.emp_no,s.salary from salaries as s inner join employees as e
on e.emp_no=s.emp_no where e.hire_date=s.from_date
order by e.emp_no desc


select e.emp_no,s.salaries as s inner join employees as e 
on e.emp_no=s.emp_no where e.hire_date=s.from_date
order by e.emp_no desc

select e.emp_no,s.salaries as s inner join employees as e
on e.emp_no=s.emp_np where e.hire_date=s.from_date
order by e.emp_no desc

select emp_no,count(emp_no)as t from salaries 
group by emp_no having t>15

select emp_no,count(emp_no ) as t from salaries 
group by emp_no having t>15

select emp_no,count(emp_no) as t from salaries 
group bu emp_no having t>15

select distinct salary from salaries where to_date='9999-01-01' 
order by salary desc

select distinct salary from slaries where to_date='9999-01-01'
order by salary desc

select distinct salary from salaries where to_date='9999-01-01'
order by salary desc 

select d.dept_no,d.emp_no,s.salary from salaries s  inner join dept_manager d
on d.emp_no=s.emp_no where d.to_date='9999-01-01'and s.to_date='9999-01-01'

select d.dept_no,d.emp_no,s.salary from salaries s  inner join dept_manager d
on d.emp_no=s.emp_no where d.to_date='9999-01-01' and s.to_date='9999-01-01'
  select d.dept_no,d.emp_no,s.salary from salaries s inner join dept_manager d
on d.emp_no=s.emp_no where d.to_date='9999-01-01' and s.to_date='9999-01-01'

select emp_no from (select * from employees 
left join dept_manager on employees.emp_no=dept_manager.emp_no)
where dept_no is null
select emp_no from(select * from employees
                  left join dept_manager on employees.emp_no=dept_manager.emp_no)
where dept_no is null


select de.emp_no,dm.emp_no as manager_no from dept_emp as de 
inner join dept_manager as dm
on de.dept_no=dm.dept_no
where de.to_date='9999-01-01' 
and dm.to_date='9999-01-01' 
and de.emp_no!=dm.emp_no

select de.emp_no,dm.emp_no as manager_no from dept_emp as de
inner join dept_manager as dm
on de.dept_no=dm.dept_no
where de.to_date='9999-01-01'
and dm.to_date='9999-01-01'
and de.emp_no!=dm.emp_no

select de.emp_no,dm.emp_no as manager_no from dept_emp as de
inner join dept_manager as dm
on de.dept_no='9999-01-01'
and dm.to_date='9999-01-01'
and de.emp_no!=dm.emp_no

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

select d.dept_no,d.emp_no,max(s.salary) as salary
from dept_emp as d inner join salaries as s 
on d.emp_no=s.emp_no
group by dept_no

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

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

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

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

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

select * from employees where emp_no%2=1 and last_name!='Mary'
order by hire_date desc

select *from employees where emp_no%2=1 and last_name!='mary'
order by hire_date desc 


select *from employees where emp_no%2=1 and last_name !='mary'
order by hire_date desc


SELECT t.title as title, AVG(salary) AS avg
FROM titles AS t
INNER JOIN salaries AS s
ON s.emp_no = t.emp_no AND s.to_date = '9999-01-01' AND t.to_date = '9999-01-01'
GROUP BY t.title

select t.title as title,avg(salary) as avg
from titles as t
inner join salaries as s 
on s.emp_no=t.emp_no
and s.to_date='9999-01-01'
and t.to_date='9999-01-01'
group by t.title

select t.title as title, avg(salary) as avg
from titles as t
inner join salaries as s 
on s.emp_no=t.emp_no
and s.to_date='9999-01-01'
and t.to_date='9999-01-01'
group by t.title

select emp_no,salary from salaries where to_date='9999-01-01' 
and salary=(select salary from salaries order by salary desc limit 1,1)


select emp_no,salary from salaries where to_date='9999-01-01'
and salary=(select salary from salaries order by salary desc limit 1,1)

select e.emp_no,s.salary,e.last_name,e.first_name 
from employees as e inner join salaries as s
on e.emp_no=s.emp_no
where s.to_date='9999-01-01'
and salary=(select max(salary) 
from salaries where salary < (select max(salary) from salaries))

select e.emp_no,s.salary,e.last_name,e.first_name
from employees as e inner join salaries as s
on e.emp_no=s.emp_no
where s.to_date='9999-01-01'
and salary=(select max(salary)
           from salaries where salary<(select max(salary) from salaries))


select e.last_name,e.first_name,dm.dept_name from
(employees as e left join dept_emp as de on e.emp_no=de.emp_no)
left join departments as dm on dm.dept_no=de.dept_no

select e.last_name,e.first_name, dm.dept_name from
(employees as e left join dept_emp as de on e.emp_no=de.emp_no)
left join departments as dm on dm.dept_no=de_dept_no

select e.last_name,e.first_name,dm.dept_name from
(employees as e left join dept_emp as de on e.emp_no=de.emp_no)
left join departments as dm on dm.dept_no=de.dept_no

select (
    (select salary from salaries where emp_no=10001 order by to_date desc limit 1)
    -(select salary from salaries where emp_no=10001 order by to_date limit 1)
) as growth

select(
(select salary from salaries where emp=10001 order by to_date desc limit 1)-
(select salary from salaries where emp=10001 order by to_date limit 1)
)as growth

select(
(select salary from salaries where emp=10001 order by to_date desc limit 1)-
    (select salary from salaries where emp=10001 order by to_date limit 1)
)as growth

select a.emp_no,(b.salary-c.salary)as growth
from employees as a inner join salaries as b
on a.emp_no=b.emp_no and b.to_date='9999-01-01'
inner join salaries as c
on a.emp_no=c.emp_no and a.hire_date=c.from_date
order by growth 

select a.emp_no,(b.salary-c.salary)as growth
from employees as a inner join salaries as b
on a.emp_no=b.emp_no and b.to_date='9999-01-01'
inner join salaries as c
on a.emp_no=c.emp_no
and a.hire_date=c.hire_date
order by growth

select de.dept_no,dm.dept_name,count(s.salary)as sum
from(dept_emp as de inner join salaries as s on s.emp_no=de.emp_no)
inner join departments dm on dm.dept_no=de.dept_no
group by de.dept_no

select s1.emp_no,s1.salary,count(distinct s2.salary)as rank
from salaries s1,salaries s2
where s1.to_date='9999-01-01'and s2.to_date='9999-01-01' and s1.salary <= s2.salary
group by s1.emp_no
order by s1.salary desc,s1.emp_no asc



SELECT de.dept_no, s.emp_no, s.salary 
FROM (employees AS e INNER JOIN salaries AS s ON s.emp_no = e.emp_no AND s.to_date = '9999-01-01')
INNER JOIN dept_emp AS de ON e.emp_no = de.emp_no
WHERE de.emp_no NOT IN (SELECT emp_no FROM dept_manager)

select de.demp_no,s.emp_no,s.salary 
from(employees as e inner join salaries as s on s.emp_no=e.emp_no and
    s.to_date='9999-01-01')inner join dept_emp as de on e.emp_no=de.emp_no
where de.emp_no not in (select emp_no from dept_manager)



SELECT sem.emp_no AS emp_no, sdm.emp_no AS manager_no, sem.salary AS emp_salary, sdm.salary AS manager_salary
FROM (SELECT s.salary, s.emp_no, de.dept_no FROM salaries s INNER JOIN dept_emp de
ON s.emp_no = de.emp_no AND s.to_date = '9999-01-01' ) AS sem, 
(SELECT s.salary, s.emp_no, dm.dept_no FROM salaries s INNER JOIN dept_manager dm
ON s.emp_no = dm.emp_no AND s.to_date = '9999-01-01' ) AS sdm
WHERE sem.dept_no = sdm.dept_no AND sem.salary > sdm.salary

select sem.emp_no as emp_no,sdm.emp_no as manager_no,sem.salary as emp_salary,
sdm.salary as manager_salary
from(select s.salary,s.emp_no,de.dept_no from salarier s inner join demp_emp de
    on s.emp_no=de.emp_no and s.to_date='9999-01-01')as sem,
(select s.salary,s.emp_no,dm.dept_no from salaries s inner join dept_manager dm 
on s.emp_no=dm.emp_no and s.to_date='9999-01-01')as sdm
where dem.dept_no=sdm.dept_no and sem.salary>sdm.salary


SELECT s2.emp_no, s2.from_date, (s2.salary - s1.salary) AS salary_growth
FROM salaries AS s1, salaries AS s2
WHERE s1.emp_no = s2.emp_no 
AND salary_growth > 5000
AND (strftime("%Y",s2.to_date) - strftime("%Y",s1.to_date) = 1 
     OR strftime("%Y",s2.from_date) - strftime("%Y",s1.from_date) = 1 )
ORDER BY salary_growth DESC

select s2.emp_no,s2.from_date,(s2.salaty-s1.salary)as salaty_growth
from salaties as s1,salaries as s2
where s1.emp_no=s2.emp_no
and salary_growth>5000
and(strftime('%Y',s2.to_date)-strftime("%Y",s1.to_date)=1
    or strftime("%Y",s2.from_date)-strftime("%Y",s1.from_date)=1
    order by salary_growth desc
发布了65 篇原创文章 · 获赞 0 · 访问量 557

猜你喜欢

转载自blog.csdn.net/u011624267/article/details/103881314