【问题标题】:Select row values that are in repeated rows that have a colum with at least 3 different values选择重复行中的行值,这些行具有至少 3 个不同值的列
【发布时间】:2013-10-24 11:43:23
【问题描述】:

我有一张这样的桌子

Ma Mi
-----
A  b
A  c
A  c
A  d
B  b
B  a
B  a
B  a
B  a
C  a
C  b

我想选择只输出具有至少 3 个不同“Mi”值的“Ma”值,我尝试 group by 和 distinct 失败,因为我想先分组“Mi”然后计数“麻”与明显的“米”。

所以中间步骤是:

Ma Mi
-----
A  b
A  c
A  d
B  b
B  a
C  a
C  b

那么我可以计算每个 Ma 的行数

在这种情况下,结果将是

Ma num
------
A   3
B   2
C   2

我只能选择 A,因为它的唯一值等于或大于 3。

结果:

Ma num
------
A   3

谢谢你!

L.

【问题讨论】:

  • 小米栏目有什么不同?
  • 有重复的 a 和 c,但我希望它们按照 Ma 进行分组,这样它就像新编辑的问题一样。

标签: sql sqlite


【解决方案1】:

要检查 GROUP BY 操作的结果,您必须使用 HAVING:

SELECT Ma,
       COUNT(DISTINCT Mi) AS Num
FROM ATableLikeThis
GROUP BY Ma
HAVING COUNT(DISTINCT Mi) >= 3

【讨论】:

    【解决方案2】:

    请根据您的要求查找查询:

    Select Distinct MyTable.Ma, 
           (Select Count(Distinct MyTableAlias.Mi) From MyTable As MyTableAlias Where MyTableAlias.Ma = MyTable.Ma) As Num from MyTable WHere (Select Count(Distinct MyTableAlias.Mi) From MyTable As MyTableAlias Where MyTableAlias.Ma = MyTable.Ma) >= 3
    

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 2017-11-20
      • 1970-01-01
      • 2021-07-14
      • 2014-12-08
      • 1970-01-01
      • 2017-10-20
      • 1970-01-01
      • 2015-11-17
      相关资源
      最近更新 更多