我发现group by使用的"with rollup"选项非常有用.但它不符合"order by"条款.有没有办法按我想要的方式订购以及计算小计?
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)
Run Code Online (Sandbox Code Playgroud)
小智 13
尝试使用临时表
SELECT *
FROM
(
SELECT country, sum(id) as cnt
FROM mygroup GROUP BY country WITH rollup
) t
ORDER BY cnt;
Run Code Online (Sandbox Code Playgroud)
本文可以帮助您链接文本
sig*_*g11 10
您是否尝试过将订单放入分组中?
SELECT country, SUM(id)
FROM mygroup
GROUP BY country DESC WITH ROLLUP;
Run Code Online (Sandbox Code Playgroud)
应该返回:
+---------+---------+
| country | SUM(id) |
+---------+---------+
| India | 14 |
| China | 74 |
| NULL | 88 |
+---------+---------+
Run Code Online (Sandbox Code Playgroud)
http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html
| 归档时间: |
|
| 查看次数: |
19661 次 |
| 最近记录: |