# 方法一,多表直接连接查询
# select de.dept_no, dept_name, title, count(t.emp_no) count
# from departments d, dept_emp de, titles t
# where d.dept_no = de.dept_no and de.emp_no = t.emp_no and de.to_date = '9999-01-01' and t.to_date = '9999-01-01'
# group by dept_no, title
# order by dept_no asc, title asc;

# 方法二,join多次连接查询
# select d.dept_no, dept_name, title, count(t.emp_no) count
# from departments d
# join dept_emp de on d.dept_no = de.dept_no and de.to_date = '9999-01-01'
# join titles t on de.emp_no = t.emp_no and t.to_date = '9999-01-01'
# group by dept_no, title
# order by dept_no asc, title asc;

# 方法三,join多层连接查询
# select dept_no, dept_name, title, count(t.emp_no) count
# from titles t
# join (
#     select d.dept_no, d.dept_name, de.emp_no
#     from departments d
#     join dept_emp de on d.dept_no = de.dept_no and de.to_date = '9999-01-01'
# ) r on t.emp_no = r.emp_no and t.to_date = '9999-01-01'
# group by dept_no, title
# order by dept_no asc, title asc;

# 方法四,窗口函数 + partition by
select distinct d.dept_no, dept_name, t.title, count(t.emp_no) over(partition by dept_no, title)
from departments as d 
join dept_emp as de on d.dept_no = de.dept_no
join titles as t on t.emp_no = de.emp_no
where de.to_date = '9999-01-01' and t.to_date = '9999-01-01'
order by dept_no;