MySQL 查询统计大于 10 的结果然后分组

MySQL query to count results greater than 10 then group by

我有一个名为 water_test 的 MySQL table。在这个 table 中,我有一个 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             |

我想找出每个省的所有 sample_result 大于 10 的值。

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

| 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)。

您可以筛选,然后聚合:

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

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

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