mysql按SUM(column)组排序,另一列

用户名

我有以下数据库表:

create table table1 (
col1 VARCHAR(5) NOT NULL,
col2 VARCHAR(5) NOT NULL,
col3 TINYINT NOT NULL,
col4 INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY);

INSERT INTO table1 VALUES
('b','c',1,NULL),
('b','d',2,NULL),
('a','e',1,NULL),
('a','f',3,NULL); 

mysql> select * from table1;
+------+------+------+------+
| col1 | col2 | col3 | col4 |
+------+------+------+------+
| b    | c    |    1 |    1 |
| b    | d    |    2 |    2 |
| a    | e    |    1 |    3 |
| a    | f    |    3 |    4 |
+------+------+------+------+
4 rows in set (0.00 sec)

我想创建一个查询,该查询按col1上的SUM(col3)GROUP排序行。然后,我需要订购col3 DESC。

So final table will look like:
+------+------+------+------+
| col1 | col2 | col3 | col4 |
+------+------+------+------+
| a    | f    |    3 |    4 |
| a    | e    |    1 |    3 |
| b    | d    |    2 |    2 |
| b    | c    |    1 |    1 |
+------+------+------+------+

i can get the SUM(col1):
mysql> select sum(col3) from table1 group by col1;
+-----------+
| sum(col3) |
+-----------+
|         4 |
|         3 |
+-----------+

但不确定如何进行。任何帮助表示赞赏。

蒂姆·比格莱森(Tim Biegeleisen)

一种选择是联接到一个查找总和的子查询:

SELECT t1.*
FROM table1 t1
INNER JOIN
(
    SELECT col1, SUM(col3) AS col3_sum
    FROM table1
    GROUP BY col1
) t2
    ON t1.col1 = t2.col1
ORDER BY
    t2.col3_sum DESC,
    t1.col1,
    t1.col3 DESC;

如果您使用的是MySQL 8+或更高版本,则可以SUM在以下ORDER BY子句中尝试将其用作分析函数

SELECT *
FROM table1
ORDER BY
    SUM(col3) OVER (PARTITION BY col1) DESC,
    col1,
    col3 DESC;

在此处输入图片说明

演示版

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按多列排序,按另一列分组

按一列排序,然后按另一列排序

如何按一列排序,但如何根据非数字的另一列进行排序?

如何按一列过滤,而按另一列排序?

在Pandas Dataframe中按一列排序,然后按另一列分组?

按一列的值排序,使行按另一列的值分组

SQL按值对另一列进行排序

SQL CE:选择不同的,按另一列排序

按另一列重新排序因子

按列排序,按另一列唯一排序

按一列对多个定界文件按字典顺序排序,对另一列按数字顺序排序

如何通过一列和另一列的排序值组?

Pandas:重新排序基于另一列创建的组中一列中的值

根据另一列中的值按 column1 或 column2 对行进行排序

在R中按组比较一列的值与另一列中的多个值

熊猫按另一列的平均值对一列的值进行排序

按一列与另一列的值完全相同的顺序排序

按另一列对一列进行排序的有效方法

在一列上按另一列对数据框进行排序-Pandas

在一列上区分,按另一列排序

熊猫按另一列中的值对一列进行排序

返回按一列排序并按另一列分组的 SQL 数据

熊猫:将一列中的单词数按另一列的值排序

按一列排序,但如果另一列为空,则推至末尾

如何对 Dataframe 中的 2 列进行排序,一列按降序排序,另一列按对应于第一列的字母顺序排序

按视图顺序排序,然后按另一列排序

如何按列和下一行排序并按另一列排序?

MySQL SUM两列,然后是净额的另一列

根据一列的相同值进行分组和排序,然后对这些组中的另一列进行排序