SQL查询帮助:从Count子查询返回不同的值

时间:2010-10-22 05:39:03

标签: sql count subquery

我已经被困了一段时间,现在试图让这个查询起作用。 这是设置:

我有一个[Notes]表,其中包含一个非唯一(Number)列和一个非唯一(Result)列。我正在寻找创建一个SELECT语句,它将显示每个不同的(Number)值,其中{(Number),(Result)}元组的计数,其中Result ='NA'是> 25。

Number | Result  
 100   |  'NA'  
 100   |  'TT'  
 101   |  'NA'  
 102   |  'AM'  
 100   |  'TT'  
 200   |  'NA'  
 200   |  'NA'  
 201   |  'NA'

基本上,有一个自动拨号器可以调用一个号码,并根据通话结果返回一个代码。我们希望忽略已经返回超过25次的“NA”(无应答)代码的数字。

到目前为止我的基本尝试与:

类似
SELECT DISTINCT n1.Number 
FROM Notes n1 
WHERE (SELECT COUNT(*) FROM Notes n2
       WHERE n1.Number = n2.Number and n1.Result = 'NA') > 25

我知道这个查询不正确,但一般来说我不确定如何将DISTINCT n1.Number从初始select与子查询COUNT中使用的Number相关联。我看到的大多数示例实际上并没有通过向返回的COUNT添加条件来实现此目的。在过去的五年里,我没有必要触及过多的SQL,所以我很生气。

2 个答案:

答案 0 :(得分:5)

你可以这样做:

SELECT Number
FROM Notes 
WHERE Result = 'NA'
GROUP BY Number
HAVING COUNT(Result) > 25

答案 1 :(得分:2)

试试这个:

SELECT Number
FROM (
    SELECT Number, Count(Result) as CountNA 
    FROM Notes
    WHERE Result = 'NA'
    GROUP BY Number
)
WHERE CountNA > 25

编辑:根据SQL产品,您可能需要为派生表提供表格相关名称,例如

SELECT DT1.Number
  FROM (
        SELECT Number, Count(Result) as CountNA 
          FROM Notes
         WHERE Result = 'NA'
         GROUP 
            BY Number
       ) AS DT1 (Number, CountNA)
 WHERE DT1.CountNA > 25;