Sql 有谁能告诉我,我是否做得对?

Sql 有谁能告诉我,我是否做得对?,sql,oracle,sqlplus,Sql,Oracle,Sqlplus,我在正在读的某本书中有这个问题。我是SQl的初学者。学习它。这不是我的家庭作业。我只是一个人在试东西 Sally想查询EMP表,并确定有多少员工居住在公司工厂所在的每个城市。她编写了以下查询,但它不起作用。查询的构造方式有什么问题 SELECT city, COUNT(emp_no) as "Number of Customers" FROM emp ORDER BY city GROUP BY city; 这就是我所做的,我引用了一些其他的查询,其中使用了count和group by…我想

我在正在读的某本书中有这个问题。我是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;
请帮忙……谢谢:)

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


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

第一个查询的问题是,
order BY
应该位于
GROUP BY
子句之后

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

您的
第二个
查询的问题是您正在选择empid,但它不在
分组依据
列表中

试一试


实际上,Sally的查询唯一的错误在于ORDER BY子句必须位于末尾:

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

只需切换分组方式和顺序方式……

ORDER
groupby
之后。如果确实需要将
where
子句放入,请将其放在
from
后面。您的第二个查询是错误的。由于empid不在GROUPBY子句中,它将导致语法错误。Sally代表了so上的许多糟糕问题。“我编写了这个查询,但它不起作用。”在Oracle中,必须使用双引号来获取大小写对象(本例中为列)名称。此外,OP声明这是从一本书中摘取的。。。但是+1用于解释原因。
SELECT count(*) Employee Total, city From emp Group by city; 
SELECT city, COUNT(emp_no) as "Number of Customers"
FROM emp
GROUP BY city
ORDER BY city;