首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对group by中的“汇总”进行排序

问对group by中的“汇总”进行排序
EN

Stack Overflow用户
提问于 2009-11-20 13:39:39
回答 6查看 24.2K关注 0票数 7

我发现与group by一起使用的"with rollup“选项非常有用。但它不具有"order by“子句的行为。有没有办法按我想要的方式排序并计算小计?

代码语言:javascript
复制
CREATE TABLE `mygroup` (
  `id` int(11) default NULL,
  `country` varchar(100) default NULL
) ENGINE=MyISAM ;

INSERT INTO `mygroup` VALUES (1,'India'),(5,'India'),(8,'India'),(18,'China'),(28,'China'),(28,'China');

mysql>select country, sum(id) from mygroup group by country with rollup; 
+---------+---------+
| country | sum(id) |
+---------+---------+
| China   |      74 | 
| India   |      14 | 
| NULL    |      88 | 
+---------+---------+
3 rows in set (0.00 sec)

mysql>select country, sum(id) as cnt from mygroup group by country order by cnt ;
+---------+------+
| country | cnt  |
+---------+------+
| India   |   14 | 
| China   |   74 | 
+---------+------+
2 rows in set (0.00 sec)

mysql>select country, sum(id) as cnt from mygroup group by country with rollup order by cnt;
ERROR 1221 (HY000): Incorrect usage of CUBE/ROLLUP and ORDER BY

Expected Result:
+---------+------+
| country | cnt  |
+---------+------+
| India   |   14 | 
| China   |   74 | 
| NULL    |   88 | 
+---------+---------+
3 rows in set (0.00 sec)
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-20 13:49:10

尝试使用临时表

代码语言:javascript
复制
 SELECT * 
 FROM 
 (
     SELECT country, sum(id) as cnt 
     FROM mygroup GROUP BY country WITH rollup
 ) t 
 ORDER BY cnt;

这篇文章可能对你link text有帮助。

票数 17
EN

Stack Overflow用户

发布于 2012-09-26 01:20:02

您试过将订单放入分组中吗?

代码语言:javascript
复制
SELECT country, SUM(id) 
    FROM mygroup 
GROUP BY country DESC WITH ROLLUP;

应返回:

代码语言:javascript
复制
+---------+---------+
| country | SUM(id) |
+---------+---------+
| India   |      14 |
| China   |      74 |
| NULL    |      88 |
+---------+---------+

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

票数 14
EN

Stack Overflow用户

发布于 2015-11-02 15:43:44

您可以尝试执行以下查询:

代码语言:javascript
复制
 SELECT country,id
     FROM mygroup GROUP BY country ASC WITH ROLLUP
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1768547

复制
相关文章

相似问题

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