查询两个表之间的输出 (MYSQL)
Query BETWEEN TWO TABLES OUTPUT (MYSQL)
两个 table 员工和部门
EMPLOYEE 的字段是 ID,Name, Salary ,DEPT_ID(部门的外键 table)
部门的字段是 id,NAME,LOCATION
员工的价值观TABLE将是
部门的价值 TABLE 将是
这些 table 的输出应该是
DEPARTMENT_Name 应该在他们的计数中按字母顺序排列如果有相同的计数 DEPARTMENT_Name 应该按字母顺序出现并且计数将按降序排列
雇员TABLE 价值观
id name salary dept_id
1 Candice 4685 1
2 Julia 2559 2
3 Bob 4405 4
4 Scarlet 2305 1
5 Ileana 1151 4
部门TABLE 值
id name location
1 Executive Sydney
2 Production Sydney
3 Resources Cape Town
4 Technical Texas
5 Management Paris
输出数据应该是
DEPARTMENT_Name Count_OF_EMPLOYEE_SAME_DEPARTMENT
Executive 2,
Technical 2,
PRODUCTION 1,
MANAGEMENT 0,
RESOURCES 0
即使没有员工,您想要显示所有部门的内容是 LEFT JOIN。因此,从部门 table(查询中的别名 "d")开始,然后 LEFT JOIN 到员工 table(别名 "e")。使用对上下文有意义的较短的别名使可读性更容易。
现在,您有公共 "count()",它只是 returns 对遇到的记录的计数,即使在次要(员工)中有多个 table 基于公共 ID .除了计数()之外,我还对员工薪水进行了求和,只是为了您可以在同一查询中获得多个聚合值。使用或不使用,只是想呈现为给你的选择。
现在下单。您希望首先基于最高计数,因此 COUNT(*) DESC(降序)是第一个排序。 Secondary 是部门名称,如果在相同的计数内,则按字母顺序排列。
select
d.`name` Department_Name,
d.Location,
count(*) NumberOfEmployees,
sum( coalesce( e.salary, 0 )) as DeptTotalSalary
from
Department d
left join employee e
on d.dept_id = e.id
group by
d.`name`
order by
count(*) desc,
d.`name`
两个 table 员工和部门 EMPLOYEE 的字段是 ID,Name, Salary ,DEPT_ID(部门的外键 table) 部门的字段是 id,NAME,LOCATION
员工的价值观TABLE将是
部门的价值 TABLE 将是
这些 table 的输出应该是
DEPARTMENT_Name 应该在他们的计数中按字母顺序排列如果有相同的计数 DEPARTMENT_Name 应该按字母顺序出现并且计数将按降序排列
雇员TABLE 价值观
id name salary dept_id
1 Candice 4685 1
2 Julia 2559 2
3 Bob 4405 4
4 Scarlet 2305 1
5 Ileana 1151 4
部门TABLE 值
id name location
1 Executive Sydney
2 Production Sydney
3 Resources Cape Town
4 Technical Texas
5 Management Paris
输出数据应该是
DEPARTMENT_Name Count_OF_EMPLOYEE_SAME_DEPARTMENT
Executive 2,
Technical 2,
PRODUCTION 1,
MANAGEMENT 0,
RESOURCES 0
即使没有员工,您想要显示所有部门的内容是 LEFT JOIN。因此,从部门 table(查询中的别名 "d")开始,然后 LEFT JOIN 到员工 table(别名 "e")。使用对上下文有意义的较短的别名使可读性更容易。
现在,您有公共 "count()",它只是 returns 对遇到的记录的计数,即使在次要(员工)中有多个 table 基于公共 ID .除了计数()之外,我还对员工薪水进行了求和,只是为了您可以在同一查询中获得多个聚合值。使用或不使用,只是想呈现为给你的选择。
现在下单。您希望首先基于最高计数,因此 COUNT(*) DESC(降序)是第一个排序。 Secondary 是部门名称,如果在相同的计数内,则按字母顺序排列。
select
d.`name` Department_Name,
d.Location,
count(*) NumberOfEmployees,
sum( coalesce( e.salary, 0 )) as DeptTotalSalary
from
Department d
left join employee e
on d.dept_id = e.id
group by
d.`name`
order by
count(*) desc,
d.`name`