sql - sql中基于频率的排序

标签 sql sorting frequency

<分区>

我在排序 sql 表时遇到问题。

我有这个:

+------+------+
| col1 | col2 |
+------+------+
| a    |    1 |
| b    |   3  |
| c    |    4 |
| d    |    3 |
| e    |    2 |
| f    |    2 |
| g    |    2 |
| h    |    1 |
+------+------+

我需要这个:

+------+------+
| col1 | col2 |
+------+------+
| e    |    2 |
| f    |    2 |
| g    |    2 |
| a    |    1 |
| h    |    1 |
| b    |    3 |
| d    |    3 |
| c    |    4 |
+------+------+

我试过使用 COUNT(),但它只适用于 GROUP OF,这就是为什么它不是我需要的。

抱歉我的英语不好,感谢所有回复。

最佳答案

如果数据库支持 OVER 子句那么就很简单了:

SELECT t.id, t.value
FROM t
ORDER BY count(*) over (partition by value) DESC

参见 SQL Fiddle - http://sqlfiddle.com/#!6/ce805/3

关于sql - sql中基于频率的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25505745/

相关文章:

c++ - 快排算法问题

Javascript 按具有多种含义的对象值(组)仅使用比较器进行排序

java - 如何确定每个文档中术语的术语频率?

python - Pandas:通过具有相同值分组的另一列对频率列进行排序

verilog - 环形振荡器改变频率?

php - 从两个表中选择不存在的地方

mysql - 从具有多列和一行的表创建具有少列和多行的 View

php - 在php中从数组中将数据插入mysql

android - 对 RecyclerView 的项目进行排序 - Kotlin 代码

sql - 有没有更好的方法从 hh :mm:ss to hhmmss? 转换 SQL 日期时间