Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择多个案例的计数_Sql_Aggregate Functions - Fatal编程技术网

SQL选择多个案例的计数

SQL选择多个案例的计数,sql,aggregate-functions,Sql,Aggregate Functions,我想要一个列,其中我计算itemtype包含两个指定值之一或location包含两个指定值之一的事务。 前两列(itemtype和location)给出了正确的数字,但第三列似乎统计了所有事务,而与itemtype或location无关。 我做错了什么 SELECT COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype', COUNT(CASE WHEN location IN ('Lattla

我想要一个列,其中我计算itemtype包含两个指定值之一或location包含两个指定值之一的事务。 前两列(itemtype和location)给出了正确的数字,但第三列似乎统计了所有事务,而与itemtype或location无关。 我做错了什么

SELECT 
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype',
  COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) 'location',
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
             WHEN location IN ('Lattlast','Appelhyllan') THEN 1  
             ELSE 0
        END) 'total'  
FROM statistics

对于最后一个,您可以使用
SUM
代替下面的
COUNT
-

SELECT 
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype',
  COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) 'location',
  sum(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
  WHEN location IN ('Lattlast','Appelhyllan') THEN 1  
 END) 'total'  

FROM statistics

对于最后一个,您可以使用
SUM
代替下面的
COUNT
-

SELECT 
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype',
  COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) 'location',
  sum(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
  WHEN location IN ('Lattlast','Appelhyllan') THEN 1  
 END) 'total'  

FROM statistics

您不需要添加
ELSE
部件:

SELECT COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) AS itemtype,
       COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) AS location,
       COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
                  WHEN location IN ('Lattlast','Appelhyllan') THEN 1  
             END) AS total
FROM statistics;

您不需要添加
ELSE
部件:

SELECT COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) AS itemtype,
       COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) AS location,
       COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
                  WHEN location IN ('Lattlast','Appelhyllan') THEN 1  
             END) AS total
FROM statistics;

我认为,第三个条件如下

SELECT
COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') OR location IN ('Lattlast','Appelhyllan') THEN 1 END) AS total
FROM statistics;

我认为,第三个条件如下

SELECT
COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') OR location IN ('Lattlast','Appelhyllan') THEN 1 END) AS total
FROM statistics;

COUNT
计数非空值,这意味着它还“计数”来自
ELSE
部分的
0
。完全删除其他部分:

SELECT 
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype',
  COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) 'location',
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
             WHEN location IN ('Lattlast','Appelhyllan') THEN 1
        END) 'total'  
FROM statistics

COUNT
计数非空值,这意味着它还“计数”来自
ELSE
部分的
0
。完全删除其他部分:

SELECT 
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 END) 'itemtype',
  COUNT(CASE WHEN location IN ('Lattlast','Appelhyllan') THEN 1 END) 'location',
  COUNT(CASE WHEN itemtype IN ('BARNTAL','STORSTIL') THEN 1 
             WHEN location IN ('Lattlast','Appelhyllan') THEN 1
        END) 'total'  
FROM statistics

您的预期输出是什么?您好,您使用的是哪些DBMS(例如SQL Server、MySQL等)。为什么您不能在where中匹配位置和项目类型clause@Klas只需将ELSE 0更改为ELSE NULL或删除它,因为ELSE NULL已经暗示。您期望的输出是什么?您好,您使用的是哪种DBMS(例如SQL Server、MySQL等)为什么不能在where中匹配位置和项目类型clause@Klas只需将ELSE 0更改为ELSE NULL或将其删除,因为已暗示ELSE NULL。另一种方法是在原始计数版本中将ELSE 0更改为ELSE NULL。或者将其删除,否则已暗示为空。:)另一种方法是在原始计数版本中将ELSE 0更改为ELSE NULL。或者将其删除,否则已暗示为空。:)