2016-03-04 63 views
1

我正在尝试计算来自每个国家/地区的客户数量,但声明似乎没有起作用。它一直说无效的标识符。计数来自不同国家的客户,国家/地区表将不会加入到客户表(Oracle)

客户位于customer_details表中,然后国家/地区名称由另一个表中的country_id确定。

我似乎无法得到此声明的工作。

SELECT country.country, count(*) AS customer_count 
FROM customer_details 
INNER JOIN country 
ON customer_details.country_id = country.country_id 
GROUP by country.country 
ORDER by country.country; 

任何帮助,将不胜感激。

+0

'从国家加入国家'...你是否指'加入customer_details'? – sgeddes

+0

投票结束,作为一个简单的错字... – sgeddes

+0

对不起,是的customer_details。现在编辑。 – frick3r

回答

1

您需要下面的查询(假设有一个名为CUSTOMER_ID列):

SELECT country.country, count(customer_details.customer_id) AS customer_count 
FROM country 
INNER JOIN customer_details 
ON customer_details.country_id = country.country_id 
GROUP by country.country 
ORDER by country.country; 

编辑:你提到你有一个名为列CUSTOMER_NAME,地址等,可以使用这些任何这些列,因为join子句将只提取提及国家/地区的结果,group by子句将确保结果按国家/地区名称分组。

希望这有助于!

+0

我没有customer_id,而是名称,地址的组合键。我觉得这是不好的做法,但对于我正在做的课程来说,这是做到这一点的方法。 尽管我只能使用名称或地址作为标识符,而不是两者都不能确保每条记录都是唯一的,您的代码仍可正常工作(谢谢!)。你知道这个方法吗? – frick3r

+0

@ frick3r然后,您可以使用名称字段或地址字段。 –

+0

非常感谢。 – frick3r