2

我现在正在阅读的某本书中有这个问题..我是 SQl 的初学者..学习它..这不是我的作业。我只是在尝试自己的东西..

Sally 想要查询 EMP 表,并确定公司有工厂所在的每个城市有多少员工。她编写了以下查询,但它不起作用。查询的构造方式有什么问题?

SELECT city, COUNT(emp_no) as "Number of Customers"
FROM emp
ORDER BY city
GROUP BY city; 

这就是我通过引用其他一些在其中使用了 count 和 group By 的查询所做的事情......我认为我们在这个查询中也需要 WHERE 子句......我该怎么做?

SELECT empid,count(*) “Employee Total”, city
From emp
Group by city;

请帮忙..谢谢:)

4

3 回答 3

2

您的first查询的问题是order by应该在group by子句之后,

SELECT city, COUNT(emp_no) as "Number of Customers"    FROM emp GROUP BY city Order By city;  

您的查询的问题second是您正在选择 empid 但它不在Group by列表中。

尝试

SELECT count(*) Employee Total, city From emp Group by city; 
于 2012-06-07T16:27:23.423 回答
2

实际上,Sally 查询的唯一问题是 ORDER BY 子句必须位于末尾:

SELECT city, COUNT(emp_no) as "Number of Customers"
FROM emp
GROUP BY city
ORDER BY city;

只需切换 GROUP BY 和 ORDER BY ...

于 2012-06-07T16:29:10.673 回答
1
SELECT count(*) as "Employee Total", city
From emp
Group by city;

在 city 上使用 GROUP BY 子句会将同一城市的所有记录分组在一起,聚合函数 COUNT(*) 将计算每个城市组中的行数。

您之前遇到的问题是列选择中的 empid 列。如果您使用 GROUP BY,则只能选择聚合列和 GROUP BY 子句中的列。如果您将 empid 添加到 GROUP BY 子句,则查询将执行但不会为您提供您正在寻找的结果,因为它会返回每个 empid 和 1 的计数。

于 2012-06-07T16:24:30.193 回答