【问题标题】:MySQL query to count results greater than 10 then group byMySQL查询计算大于10的结果然后分组
【发布时间】:2020-02-25 13:46:31
【问题描述】:

我有一个名为 water_test 的 MySQL 表。在这个表中,我有一个 id、一个 province 和一个 sample_result

| id | province | sample_result |
| 1  | prov_1   | 3             |
| 2  | prov_2   | 12            |
| 3  | prov_3   | 45            |
| 4  | prov_4   | 7             |
| 5  | prov_2   | 8             |
| 6  | prov_2   | 76            |
| 7  | prov_3   | 32            |
| 8  | prov_1   | 5             |
| 9  | prov_1   | 99            |
| 10 | prov_4   | 67            |
| 11 | prov_2   | 4             |

我想为每个省找出所有大于 10 的 sample_results。

查询结果应该是这样的...

| province | count |
| prov_1   | 1     |
| prov_2   | 2     |
| prov_3   | 2     |
| prov_4   | 1     |

您将如何在 MySQL 查询中表达这一点?我在想 GROUP BY 和 HAVING COUNT 并尝试了这个......

SELECT sample_result
  FROM water_test
 GROUP BY province
HAVING COUNT(sample_result) > 10;

但此查询无法运行(错误 1055)。

【问题讨论】:

    标签: mysql sql group-by count having-clause


    【解决方案1】:

    您可以过滤,然后聚合:

    select province, count(*)
    from mytable
    where sample_result > 10
    group by province
    

    【讨论】:

    • 我已经运行了这个查询,它运行良好。感谢您对 GMB 的帮助
    • 在这个查询中,没有sample_result > 10记录的省份将不会被列出。如果您需要以零计数列出此类省份,请使用另一种技术。
    【解决方案2】:

    你可以像这样有条件地求和

    SELECT province, sum(sample_result > 10) as count
    FROM water_test
    GROUP BY province
    

    【讨论】:

      猜你喜欢
      • 2020-08-30
      • 1970-01-01
      • 2016-01-23
      • 2018-05-30
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 2016-07-08
      相关资源
      最近更新 更多