我有一个表,该表具有自动递增的数字基数。我试图获取与按主键增量分组的条件相匹配的行数。给定数据:
Proxy
如果我想知道每五行有多少行与| id | value |
|----|-------|
| 1 | a |
| 2 | b |
| 3 | a |
| 4 | a |
| 5 | b |
| 6 | a |
| 7 | b |
| 8 | a |
| 9 | b |
| 10 | b |
| 11 | a |
| 12 | b |
相匹配,结果应该是:
value = 'a'
我可以在| count(0) |
|----------|
| 3 |
| 2 |
| 1 |
语句中嵌套一系列子查询,例如:
SELECT
但是有没有一种方法可以使用SELECT (SELECT count(0)
FROM table
WHERE value = 'a'
AND id > 0
AND id <= 5) AS `1-5`,
(SELECT count(0)
FROM table
WHERE value = 'a'
AND id > 5
AND id <=10) AS `6-10`,
...
语句或类似的方法而无需手动写出增量?如果不是,是否像上面的示例中那样,GROUP BY
语句中的一系列子查询比其他子查询更省时?
答案 0 :(得分:1)
您可以将ID除以5,然后ceil
结果:
SELECT CONCAT((CEIL(id / 5.0) - 1) * 5, '-', CEIL(id / 5.0) * 5), COUNT(*)
FROM mytable
WHERE value = 'a'
GROUP BY CEIL(id / 5.0)
答案 1 :(得分:1)
以下聚合查询应该可以解决问题:
SELECT CEIL(id/5), COUNT(*)
FROM table
WHERE value = 'a'
GROUP BY CEIL(id/5)