SQL-Excel中的countif通信

SQL-Excel中的countif通信,sql,db2,Sql,Db2,我有下表,CODE1是填充的,COUNT有我希望使用公式得到的值 它的大小写与excel count if()基本相同,但我需要在SQL中使用它 CODE1 COUNT 1 2 1 2 2 3 2 3 2 3 3 2 3 2 谢谢大家! 您没有指定DBMS,因此这是标准SQL(所有现代DBMS都能理解,包括DB2 for z/

我有下表,CODE1是填充的,COUNT有我希望使用公式得到的值

它的大小写与excel count if()基本相同,但我需要在SQL中使用它

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

谢谢大家!

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

第一个解决方案:

我认为这个SQL将组合GROUPBY和having子句,如

Select CODE1,count(1) as cnt
from yourTable
group by CODE1
having count(1) > threshold 
阈值将是您的标准,高于SQL的SQL将适用于所有数据表,如MS Access、Oracle等

第二种解决方案:

在case语句中使用sum,如

Select CODE1,sum(case when yourColumn ='anyValue' then 1 else 0 end) as cnt
from yourTable
第二种解决方案不能在所有数据库上工作

编辑:


现在我给出MYSQL中的解决方案,请参见

您使用的是哪种DBMS?博士后?Oracle?我正在使用DB2-IBMDB2 for I 7.2目前不支持OLAP中的聚合函数。MySQL也不支持一般的聚合函数。@PisoiFlo-。。。。我不知道怎么做。这两条语句都不会生成您要求的结果集,其中一条语句会在数据库中抛出语法错误。第一条语句将折叠结果,因此每个
code1
值只能得到一行(与多行相反,每行的计数相同)。对于第二条语句,如果您使用聚合函数(如
SUM
)并选择不在
GROUP BY
中的列,则几乎所有RDBMS都会抛出语法错误。此外,案例必须针对
code1
中的每个值进行更新,这让我觉得。。。有问题。请参阅SQL fiddle中的,很抱歉给您带来不便。A)看起来仍然不像OP要得到的结果集(在问题中,对任何实例都要重复计数)。B) 每个子查询中的外部
GROUP BY
是无意义的(您已经有了唯一的行),匹配的聚合函数也是如此。C) 在本例中使用
COUNT
WHERE
子句(如果您有一个支持索引,可能也会更快),如果结果应该是这样的话。
Select CODE1,sum(case when yourColumn ='anyValue' then 1 else 0 end) as cnt
from yourTable