改进对在另一列中具有特定值的不同值进行计数的查询

zthomas.nc

假设我有一张表格,格式如下:

| id | category|
|----|---------|
| 10 | A       |
| 10 | B       |  
| 10 | C       |
| 2  | C       |

我想计算在类别变量中具有所有三个值 A、B 和 C 的不同 id 的数量。在这种情况下,查询将返回,1因为只有 id = 10 才是真的。

我的直觉是编写以下查询来获取此值:

SELECT 
    COUNT(DISTINCT id), 
    SUM(CASE WHEN category = 'A' THEN 1 else 0 END) AS A,
    SUM(CASE WHEN category = 'B' THEN 1 else 0 END) AS B,
    SUM(CASE WHEN category = 'C' THEN 1 else 0 END) AS C
FROM 
    table 
GROUP BY 
    id
HAVING
    A >= 1
    AND 
    B >= 1
    AND
    C >= 1

不过,这感觉有点过头了——有没有更简单的方法来实现预期的结果?

戈登·利诺夫

您很接近,但您需要两个级别的聚合。假设没有重复的行:

SELECT COUNT(*)
FROM (SELECT id
      FROM t
      WHERE Category IN ('A', 'B', 'C') 
      GROUP BY id
      HAVING COUNT(*) = 3
     ) t;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在pandas中,有没有一种方法可以对另一列进行分组,然后对另一列具有指定值的地方进行唯一计数?

删除r中另一列中具有相同ID但值不同的行

MySQL-如何从一列中查询具有不同值的不同列

SQL查询以基于另一个列值对具有公共列值的行进行计数

包括一列以对具有特定值的记录进行计数

通过SQL中的另一列对具有重复值的列进行排序

根据具有多个记录的表中另一列的不同值添加值

如何在Laravel查询构建器中获取一列具有最高值而另一列具有特定值的行

基于R中另一列的值进行计数

如何选择具有在一列中重复但在另一列中具有不同值的列值的行?

选择在一列中具有相同值而在另一列中具有不同值的行

在具有相同ID pyspark数据框的另一列中显示不同的值

计算一列在另一列中是否具有特定值

删除一列中具有重复值但另一列中具有不同值的行

运行查询,在该查询中显示在两列中具有重复值的记录,但在另一列中具有不同记录的记录

从另一列中具有不同值的列中获取值

MySQL计数一列的唯一性,而另一列在分组依据中具有单个值

根据与另一列不同的值对值进行计数

如何在R的另一列中仅对具有多个不同值的行进行子集化?

选择在列中具有相同值而在另一列中具有不同值的记录

MySQL 选择查询:SUM() 行具有不同的值,来自另一列

当另一列在熊猫中具有特定值时,用 NaN 替换列值

在多行的一列中查找具有相同值的行,而另一列具有不同的值

如何根据另一列 SQL 中的值创建具有计数值的新列

以特定顺序在另一列中选择具有不同值的 ID

在R中的另一列中保留具有不同值的行

如何计数,一列中的值在另一列中具有共同值的频率

MySQL 查询一列中具有相同值而另一列中具有不同值的行

如何删除另一列中具有特定值的所有 NaN 值的行?