【问题标题】:complex mysql query DISTINCT复杂的mysql查询DISTINCT
【发布时间】:2015-07-28 11:38:23
【问题描述】:

我想计算有多少“团队”有 5 个或更多“付费=1”玩家。

我试过了..

SELECT COUNT (DISTINCT team) FROM player WHERE pay=1

...但是结果是 32,其中 27 支球队支付了 5 名球员,5 支球队支付了少于 5 名的球员。

如何编辑此查询以仅获取 pay=1 >=5 的计数团队?

最好的问候!

【问题讨论】:

    标签: mysql sql select count distinct


    【解决方案1】:

    按团队分组,只选择那些符合您要求的条件。然后计算那些团队

    select count(*)
    from
    (
        SELECT team
        FROM players
        group by team
        having sum(paid=1) >= 5
    ) tmp
    

    【讨论】:

    • 这个结果不是 27,而是很多行,其中有多少玩家拥有团队(5、6、7)
    • 你太棒了,非常感谢你,我从来没有做过这样复杂的查询!
    • 最好添加WHERE paid = 1而不是SUM(condition),那么它就是一个简单的HAVING COUNT(*) >= 5
    • @dnoeth:这样更好吗?为此,您需要一个额外的 where 子句。我觉得它更具可读性。
    • WHERE 减少了要聚合的行数,具体取决于优化器如何实际处理聚合,这可能更有效。而且它可能更容易理解:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多