MySQL分组依据:仅包括具有特定列计数的行
我想创建一个查询,计算包含a和B的相同值的行数,但仅当任何给定a的B出现率大于10时。换句话说,如果我的表中有11行,如下所示: 使用以下查询: 通过A、B从foos组中选择A、B、countB,按countB desc排序 我希望返回以下内容:MySQL分组依据:仅包括具有特定列计数的行,mysql,Mysql,我想创建一个查询,计算包含a和B的相同值的行数,但仅当任何给定a的B出现率大于10时。换句话说,如果我的表中有11行,如下所示: 使用以下查询: 通过A、B从foos组中选择A、B、countB,按countB desc排序 我希望返回以下内容: | a | a | 10 | 更新/编辑:这里还有一个条件需要检查;对于上面给定的查询,我只希望返回的行,在A,B情况下的组_中,A出现在10多个返回行中。例如: | 1 | a | a | | 2 | a | b | | 3 | a | c
| a | a | 10 |
更新/编辑:这里还有一个条件需要检查;对于上面给定的查询,我只希望返回的行,在A,B情况下的组_中,A出现在10多个返回行中。例如:
| 1 | a | a |
| 2 | a | b |
| 3 | a | c |
| 4 | a | d |
| 5 | a | e |
| 6 | a | f |
| 7 | a | g |
| 8 | a | h |
| 9 | a | i |
| 10 | a | j |
| 11 | a | k |
只需在having子句中添加条件
说明:
此查询将沿着A和B相同的记录计数获取A和B。如果计数大于10,则仅显示这些结果
HAVING子句被添加到SQL中,因为WHERE子句不能与聚合函数一起使用
编辑:
如果要按A和B分组,则对更新的表数据不起作用。在这种情况下,你必须像
select A, count(B)
from foos
group by A
having count(B) > 10
order by count(B) desc
试试这个:
select A, B, count(B) as count
from foos
group by A, B
having (Count>10)
order by count(B) desc;
因此,如果我理解正确,countB将只返回A和B的每个不同组合的行总数,而不计算任何其他列。因此,使用countB>10将简单地排除countB为10或更少的任何分组行?@Argus9:此查询将沿着A和B都相同的记录计数获取A和B。如果计数大于10,则只显示这些结果。这正是我需要的。非常感谢事实上,在运行查询之后,我意识到我没有充分解释我在寻找什么。实际上,我需要查询只返回任何给定A在返回行中出现10次以上的行。请参阅上面更新的描述。@Argus9:尝试使用countB>=10。尝试此答案在堆栈溢出方面价值很低,因为它们在教育/授权OP和数千名未来研究人员方面做得很差。
select A, B, count(B)
from foos
group by A, B
having count(B) > 10
order by count(B) desc;
select A, count(B)
from foos
group by A
having count(B) > 10
order by count(B) desc
select A, B, count(B) as count
from foos
group by A, B
having (Count>10)
order by count(B) desc;