我有下表,CODE1已填充,COUNT具有我希望使用公式的值。
它与excel计数if()基本相同,但我在SQL中需要它。
CODE1 COUNT
1 2
1 2
2 3
2 3
2 3
3 2
3 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