繁体   English   中英

如何计算SQL中不同表中的雇员人数?

[英]How do I count something the number of employee that is in a different table in SQL?

问题问

“写一个查询以显示办公室所在的城市和国家/地区以及该位置的雇员人数。按雇员人数的降序对结果进行排序。”

到目前为止,我已经提出,

SELECT city, country, SELECT COUNT(city,country) 
FROM Offices
ORDER BY(SELECT COUNT(city,country) 
                FROM Offices)DESC; 

但是,它不会让我运行它。 我认为我在SELECT COUNT部分中犯了一个错误。

员工表包含

  • 员工编号
  • 名字
  • 延期
  • 电子邮件
  • 汇报给
  • 职称
  • officeCode

Office表包含

  • officeCode
  • 电话
  • 地址第一行
  • addressLine2
  • 国家
  • 邮政编码
  • 领土
  • 办公室位置

有人知道我做错了吗? 谢谢! 抱歉,这是很多东西。

使用联接和计数

SELECT city, country,officeLocation, COUNT(e.employeeNumber) 
FROM Offices ofc join employees e on ofc.officeCode=e.officeCode
group by city, country,officeLocation

解决此问题的几种方法。 使用左外部联接:(请确保在此处使用左外部而不是INNER JOIN,否则您只会获得有员工的位置。在您的情况下可能会起作用,但是如果某个位置没有现有员工怎么办?)

SELECT City, Country, COUNT(e.employeeNumber) AS EmployeeCount
FROM Offices o
LEFT OUTER JOIN Employees e
    ON e.OfficeCode = o.OfficeCode
GROUP BY City, Country
ORDER BY 3 DESC

或者,您可以将子查询与select语句一起使用:

SELECT City, Country,
    (SELECT COUNT(*) FROM Employees e WHERE o.OfficeCode = e.OfficeCode) AS EmployeeCount
FROM Offices o
ORDER BY 3 DESC
You can do it using a LEFT JOIN, GROUP BY and ORDER BY.
We need LEFT JOIN and GROUP BY to get the employee count and the ORDER BY to order the results in descending order of no of employees.

SELECT OfficeCode, City, Country, COUNT(E.employeeNumber) AS EmployeeCount
FROM Offices O
LEFT JOIN Employees E ON E.OfficeCode = E.OfficeCode
GROUP BY OfficeCode, City, Country
ORDER BY COUNT(E.employeeNumber) DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM