GROUP BY与COUNT条件
问题描述:
I have a result set such as:
Code No
1 *
1 -
1 4
1
1
现在我基本上想要一个具有2列的查询,一个总数的计数和一个没有数字的计数。GROUP BY与COUNT条件
Code No_Number Total
1 4 5
林假设这需要由一群和计数,但我怎么可以做2个不同的计数这样的查询?
这是我有这么远,但我坚持一点用它
SELECT CODE,NO
Sum(Case when No IN ('*', '-', '') then 1 else 0 end) as Count
答
其余的我想你基本上只需要GROUP BY
:
SELECT CODE,
SUM(Case when No IN ('*', '-', '') then 1 else 0 end) as Count,
COUNT(*) as total
FROM t
GROUP BY CODE;
答
好了,这花了时刻:-),但是在这里......我用CASE语句来创建和填充No_Number列;如果原始表值是一个数字,则数据库为原始表中的行赋值1,或者如果不是,则赋予它一个NULL并将其从COUNT中丢弃。然后,当它使计数它只是承认其最初的数字和其他一切无视值..
如果结果集是在一个表或临时表:
SELECT Code,
COUNT(CASE WHEN [No] NOT LIKE '[0-9]' THEN 1 ELSE NULL END) AS No_Number,
COUNT(Code) AS Total
FROM <tablename>
GROUP BY Code
如果结果集是您可以使用CTE(公用表表达式)来获得所需结果,或者可以在早期查询中包含此代码的一部分。