我现在正在阅读的一些书中有这个问题。我是SQl的初学者......学习它......这不是我的功课。我只是在尝试自己的东西......
Sally想要查询EMP表并确定公司工厂所在的每个城市中有多少员工。她写下以下查询但不起作用。构造查询的方式有什么问题?
SELECT city, COUNT(emp_no) as "Number of Customers"
FROM emp
ORDER BY city
GROUP BY city;
这就是我通过引用其他一些有计数和分组的查询所做的...我认为在这个查询中我们也需要WHERE子句。我可以这样做吗?
SELECT empid,count(*) “Employee Total”, city
From emp
Group by city;
请帮助..谢谢:)
答案 0 :(得分: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;
答案 1 :(得分: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 ......
答案 2 :(得分:1)
SELECT count(*) as "Employee Total", city
From emp
Group by city;
对city使用GROUP BY子句将所有记录与同一城市组合在一起,聚合函数COUNT(*)将计算每个城市组中的行数。
之前的问题是列select中的empid列。如果使用GROUP BY,则只能选择GROUP BY子句中的聚合列和列。如果你要将empid添加到GROUP BY子句中,那么查询就会执行但是不会给你你想要的结果,因为它会返回每个empid和一个计数为1。