首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL只输出n行数,并将其余行分组为n+1第四行。

问MySQL只输出n行数,并将其余行分组为n+1第四行。
EN

Stack Overflow用户
提问于 2014-01-27 06:25:46
回答 3查看 459关注 0票数 1

是否可以构建一个SQL查询,只输出n行数,并将返回的n+1第四行的其余列加起来。

例如,我有两个从sql查询返回的列。第一列是名称,第二列包含计数值。名字是不同的,计数是数字。

查询应该只返回3行,如果有3行以上,则所有行都应该加到第四行,其名称为“Other”,其余行的计数总和为第四行。

请帮帮我。提前谢谢。

(例如)

表

名称\\#.值

第一至第十二

第二- 11

第三-9

第四- 15

第五- 13

第六至第八次

查询结果

名称\\#.值

第一至第十二

第二- 11

第三-9

其他- 36

EN

回答 3

Stack Overflow用户

发布于 2014-01-27 06:40:55

我相信它看起来会是:

代码语言:javascript
复制
SELECT DISTINCT TOP 3 Col1, Col2
FROM Table

除非你想要有第二列的东西,否则它将是

代码语言:javascript
复制
SELECT DISTINCT TOP 3 Col1, Count(Col2) AS "New Name"
FROM Table
GROUP BY Col1

如果您想要第四行,那么使用另一个使用偏移量的select语句执行UNION,这样就可以选择除前3以外的所有行。

查看这里、这里和这里以获取顶部、偏移量和UNION的示例。

重读你问题的第一部分,如果你想要改变上面的数字,你很可能需要把它作为一个存储过程,通过一个变量来控制顶部的数字并抵消。使用这作为参考。

票数 0
EN

Stack Overflow用户

发布于 2014-01-27 06:41:50

尝试GROUP BY...WITH ROLLUP将n+1行中的所有行数之和。试试下面的例子。

代码语言:javascript
复制
SELECT IFNULL(a.id, 'Other'), SUM(1) ids
FROM tableA 
GROUP BY a.id WITH ROLLUP
票数 0
EN

Stack Overflow用户

发布于 2014-01-27 07:19:53

代码语言:javascript
复制
Could you try something like this :

select case(name) 
    when 'First' THEN 'First'
    when 'Second' THEN 'Second'
    when 'Third' THEN 'Third'
    else 'Others'
end name, sum(value) value
from table
group by case(name) 
    when 'First' THEN 'First'
    when 'Second' THEN 'Second'
    when 'Third' THEN 'Third'
    else 'Others'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21374302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档