使用Oracle在SQL查询中集成COUNT函数的麻烦

时间:2013-12-19 05:38:16

标签: sql database oracle count

我试图在SQL中自我教育,以便更好地在工作中使用数据库。为此,我使用的是Oracle Application Express。如果我第一次使用COUNT函数,并且在查询中将其集成时遇到一些困难。我已经做了大量的研究并阅读了相当多的文献,但我似乎无法做到正确。

我的目标是显示每个频道的channel_namechannel_number列(来自频道表)以及将该频道作为收藏频道的客户数量({{ 1}}调查表中的列)。请参阅下面的代码:

survey_result

目前我收到错误消息:

  

ORA-00936:缺少表达。

3 个答案:

答案 0 :(得分:2)

这些中的任何一个都可能适合你

SELECT channel.channel_number, 
       channel.channel_name, 
       count(survey.survey_result)
  From Channel, survey
 WHERE survey.channel_number = channel.channel_number
 GROUP BY 
       channel.channel_number, 
       channel.channel_name

SELECT channel.channel_number, 
       channel.channel_name, 
       survey.survey_result, 
       (SELECT count(survey_result) FROM survey)
  From Channel, survey
 WHERE survey.channel_number = channel.channel_number

答案 1 :(得分:2)

试试这个:

以下查询仅为您提供至少有1位客户的频道。

SELECT C.channel_number, C.channel_name, COUNT(S.survey_result) NoOfCustomers
FROM Channel C
INNER JOIN survey S ON S.channel_number = C.channel_number
GROUP BY C.channel_number, C.channel_name;

以下查询为您提供所有渠道是否有客户。

SELECT C.channel_number, C.channel_name, COUNT(S.survey_result) NoOfCustomers
FROM Channel C
LEFT JOIN survey S ON S.channel_number = C.channel_number
GROUP BY C.channel_number, C.channel_name;

答案 2 :(得分:1)

count是一个聚合函数,因此你应该在channel.channel_number和channel.channel_name上有一个group by。然后只使用count(survey.survey_result)而不是count(SELECT survey.survey_result FROM survey)。 Madhivanan和Saharsh Shah的回答对我来说很好看。包括这个答案来解释原因。