mysql - 如何通过在MySQL中对具有特定条件的列中的多行数据进行计数来进行排名
问题描述
我有一张类似下面的桌子
编辑 1列 id 是主键
id ref_id count_value
10 34 5
11 34 2
12 36 3
13 30 1
14 25 20
15 34 15
15 36 10
我想要的是以这样的方式对齐和获取数据
字段中的值count_value
将为每个对应的值相加ref_id
所以在这个例子中
ref_id
34个有3个条目,总共count_value
22个
ref_id
36个有两个条目,总共count_value
13个
ref_id
25个有一个条目,总共count_value
20个
所以我期待的是以这种方式
ref_id
34
25
36
30
我尝试使用group by
,但这并不能解决这个问题,我想我想将单元格内的值相加,然后根据最终计数对其进行排名
关于问题中的条件部分,有一个timestamp column
并且只需要获取在特定日期时间之后创建的数据
解决方案
您可以group by ref_id
,然后按以下顺序对记录进行sum()
排序count_value
:
select ref_id
from mytable
group by ref_id
order by sum(count_value) desc
您可以在查询中添加一个where
子句以在时间戳列上实现过滤器(您没有在示例数据中显示):它位于from
子句和group by
子句之间。
| ref_id | | -----: | | 34 | | 25 | | 36 | | 30 |
推荐阅读
- javascript - 获取javascript中字符串中两个匹配字符之间的字符长度
- javascript - 如何在laravel中调用''标记中的路线
- node.js - 带有ubuntu的Nodejs pm2在更新后不起作用
- wordpress - wp_verfy_nonce 不断给出错误
- spring-boot - 防止直接调用我的 Spring Boot Rest API
- python - 在终端上运行的 ros 命令找不到 python 包
- python-3.x - 搜索和删除算法
- google-docs-api - 使用 Google Docs Api 自动更新目录
- sql - 跨行的 SQL DISTINCT 值
- docker - 为什么对象检测模型在不同的机器上给出不同的结果