0

我正在尝试计算我的数据库中总为 50 且名称仅出现一次的行数。这是我确信会起作用的问题

SELECT name,
       gross
FROM   daysheet
WHERE  gross = '50'
GROUP  BY name
HAVING Count(name) = 1  

然而,这似乎并没有像我认为的那样工作。

GROSS      NAME
 50      Person 1
 50      Person 2
 705     Person 2

上面是表格的一个例子。我希望我的查询返回 1 行,因为 50 出现 1 次,其中名称是完全唯一的,但上面的查询为此返回 2

我也尝试过使用 DISTINCT,但它总是返回 2。

我哪里出错了?

谢谢!

澄清:我正在尝试检索总为 50 且名称仅在数据库中出现 1 次的行数。所以 Person 2 将被忽略,因为它出现了两次,并且行数应该是 1,因为只有 1 次是总共 50 和一个只出现一次的名字

4

3 回答 3

1

试试这个...

select name, gross
from   daysheet d1
where  gross = 50
and    1 in (select count(name)
             from daysheet d2
             where d2.name = d1.name)

http://sqlfiddle.com/#!2/be634/1

于 2013-07-24T14:53:47.103 回答
0
SELECT name,
       gross
FROM   daysheet
GROUP  BY name, gross
HAVING Count(name) = 1

应该可以

于 2013-07-24T14:43:13.073 回答
0

这应该适合你。

SELECT name, gross FROM daysheet WHERE gross='50' and name in 
(SELECT name FROM daysheet GROUP BY name HAVING count(name)=1)
于 2013-07-24T14:50:00.613 回答