GROUP BY与COUNT条件

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(公用表表达式)来获得所需结果,或者可以在早期查询中包含此代码的一部分。