任何人都可以告诉我,如果我正在进行此查询吗?

时间:2012-06-07 16:21:00

标签: sql oracle sqlplus

我现在正在阅读的一些书中有这个问题。我是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;

请帮助..谢谢:)

3 个答案:

答案 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。