来自Excel的SQL-countif通信

时间:2015-08-10 10:03:44

标签: sql db2

我有下表,CODE1已填充,COUNT具有我希望使用公式的值。

它与excel计数if()基本相同,但我在SQL中需要它。

CODE1   COUNT       
  1       2  
  1       2  
  2       3  
  2       3   
  2       3    
  3       2   
  3       2    

谢谢!

2 个答案:

答案 0 :(得分:3)

您没有指定DBMS,因此这是标准SQL(所有现代DBMS都能理解 - 包括任何最新版本的DB2 for z / OS或LUW):

select code1, 
       count(*) over (partition by code1) as cnt
from the_table
order by code1;

答案 1 :(得分:0)

第一个解决方案:

我认为这个SQL将是group by和having子句的组合,比如

Select CODE1,count(1) as cnt
from yourTable
group by CODE1
having count(1) > threshold 

阈值将是您的标准,上面的SQL将适用于所有数据,如MS Access,Oracle等。

第二个解决方案:

将sum与case语句一起使用,例如

Select CODE1,sum(case when yourColumn ='anyValue' then 1 else 0 end) as cnt
from yourTable

第二种解决方案不适用于所有数据库。

编辑:

现在我在MYSQL中提供解决方案,请参阅SQL Fiddle