我试图在SQL中自我教育,以便更好地在工作中使用数据库。为此,我使用的是Oracle Application Express。如果我第一次使用COUNT函数,并且在查询中将其集成时遇到一些困难。我已经做了大量的研究并阅读了相当多的文献,但我似乎无法做到正确。
我的目标是显示每个频道的channel_name
和channel_number
列(来自频道表)以及将该频道作为收藏频道的客户数量({{ 1}}调查表中的列)。请参阅下面的代码:
survey_result
目前我收到错误消息:
ORA-00936:缺少表达。
答案 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的回答对我来说很好看。包括这个答案来解释原因。