sql—在mysql中,选择符合按id增量分组的条件的行数

dxpyg8gm  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(488)

我有一个表有一个自动递增的数字主。我正在尝试获取与按主键增量分组的条件相匹配的行数。根据数据:

| 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 语句或类似的东西,我不必手动写出增量?如果没有,是否有比数据库中的一系列子查询更省时的方法 SELECT 如上例所示的语句?

p8h8hvxi

p8h8hvxi1#

下面的聚合查询应该可以做到这一点:

SELECT CEIL(id/5), COUNT(*)
FROM table
WHERE value = 'a'
GROUP BY CEIL(id/5)
n1bvdmb6

n1bvdmb62#

你可以把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)

相关问题