正确使用计数和分组

时间:2017-03-28 20:06:11

标签: sql database oracle

我有一个关系CandyC( id ,电子邮件,年龄,姓名,candy_id) 我想计算一次与CandyC.candy_id相关联的CandyC.ids。

尝试:

SELECT email, age, name
FROM CandyC
GROUP BY id
HAVING COUNT(DISTINCT candy_id) = 1;

它给了我一个错误: 不是按表达式分组

2 个答案:

答案 0 :(得分:1)

group by子句需要直接选择所有非聚合列。另外,在having之后使用group by通常是一个好主意,因为它是标准的写法(尽管Oracle也支持它)。 / p>

这是否符合您的要求:

select email, age, name
from candyc
group by id, email, age, name
having count(distinct candy_id) = 1

如果没有,您应该在问题中提供样本数据和预期结果以澄清。

答案 1 :(得分:0)

我想你想要更像这样的东西:

SELECT candy_id, COUNT(*)
FROM CandyC
GROUP BY candy_id;

我不知道email / age / name列与此问题有什么关系:

  

我想计算一次与CandyC.candy_id相关联的CandyC.ids。