MySQL查询,来自数据的前十个结果,并计算其下剩余的内容

伊格纳斯(Ignas S)

这是我的查询,我得到前15个结果,并且一切都很好,但是在前15个之下有很多行,我需要收集这些结果,将它们计算在内,并在同一查询中命名为“其他”。这是我得到和查询的结果:

SELECT  `Person` , COUNT(  `Person` ) AS Total
FROM taxes
WHERE  `Person` IS NOT NULL 
AND  `Person` <>  ''
AND  `Date` 
BETWEEN  '2013-11-11'
AND  '2013-11-30'
GROUP BY (
 `Person`
)
ORDER BY  `Total` DESC 
LIMIT 5

结果

Person - Total

a ------ 66     
b ------ 44
c ------ 33
d ------ 13
e ------ 14
-----------
f ------ 10
g ------ 8
h ------ 7

这就是我想要得到的:

Person | Total
a ------ 66     
b ------ 44
c ------ 33
d ------ 13
e ------ 14
-----------
others --- 25

谢谢!

梅内劳斯

使用并集,限制和偏移

SQLFiddle:http ://sqlfiddle.com/#!2/69e65/1

(SELECT `Person` ,
 COUNT(`Person`) AS `Total`
 FROM taxes
 WHERE `Person` IS NOT NULL
 AND `Person` <> ''
 AND `Date` BETWEEN '2013-11-11' AND '2015-11-30'
 GROUP BY `Person`
 ORDER BY COUNT(`Person`) DESC LIMIT 2)
UNION
 (SELECT 'Other',
 sum(`Total`) AS `Total`
 FROM
 ( SELECT `Person` ,
 COUNT(`Person`) AS Total
 FROM taxes
 WHERE `Person` IS NOT NULL
 AND `Person` <> ''
 AND `Date` BETWEEN '2013-11-11' AND '2015-11-30'
 GROUP BY `Person`
 ORDER BY COUNT(`Person`) DESC 
 LIMIT 2, 18446744073709551615) AS TEMP 
 );

使用@row变量

SQLFiddle:http ://sqlfiddle.com/#!2/0a61a/5

set @row:=1;
select if(@row>2, 'Other', `Person`) as `Person`,
sum(`Total`) as `Total`,
@row:=@row+1 as `IgnoreColumn` 
from
(
 SELECT `Person` ,
 COUNT(`Person`) AS Total
 FROM taxes
 WHERE `Person` IS NOT NULL
 AND `Person` <> ''
 AND `Date` BETWEEN '2013-11-11' AND '2015-11-30'
 GROUP BY `Person`
 ORDER BY COUNT(`Person`) DESC
) as TEMP
group by if(@row>2, 'Other', `Person`)
order by @row;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL返回表中前十个不同的值,而不是所有结果中的前十个

删除字符串中前十个字符的所有内容

在非昂贵的查询中合并数十个数据库中的数据?

如何以XML格式打印前十个数据的列表

Python:存储前十个数字的最佳方式

在SQL Server中透视表的前十个值

如何从python中的Counter打印前十个元素

如何从容器中迭代前十个项目

十个最近的记录

组合来自两个 mySQL 查询的交叉结果

解析来自mysql查询的结果

使用方法从用户输入的五到十个数字计算平均值

Grails-仅在g:each中的前十个值

获取Javascript中具有最高值的前十个var

显示前十个字符,点击扩展(或悬停)

在jQuery中使用nth-of-type选择前十个元素

如何简短地初始化前十个整数的数组?

尝试执行for循环以查找“前十个数字之和”时遇到错误“'('预期”

使用php从文本文件中仅读取前十个单词

从数十个df.sum()系列中创建一个新的数据框

分离十个随机训练和测试数据集

使用前一行计算剩余总数的 SQL 查询

MySQL查询使用来自两个表的数据

Apache Ignite sql 查询仅返回缓存内容,而不是来自数据库的完整结果

MySQL查询同时合并来自2个表的结果(如果count()也为零,则获取结果)

来自另一个查询结果的MySQL UPDATE查询SET

每次为数组中的每十个项目运行十个线程

计算来自 MYSQL DB 的结果数

MySQL查询从表总数中选择并使用,计算剩余