我已经被困了一段时间,现在试图让这个查询起作用。 这是设置:
我有一个[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,所以我很生气。
答案 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;