在MySQL中,如何通过对一列中的多行数据进行计数并在一定条件下进行排序
我有一张像下面这样的桌子 编辑1列id是主键在MySQL中,如何通过对一列中的多行数据进行计数并在一定条件下进行排序,mysql,sql,group-by,sql-order-by,Mysql,Sql,Group By,Sql Order By,我有一张像下面这样的桌子 编辑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 我想要的是以这样的方式对齐和获取数据,其中 对于每个相应的ref\u id 在这个例子中 ref\u id34有三个条目,总的count\u值
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
我想要的是以这样的方式对齐和获取数据,其中
对于每个相应的ref\u id
在这个例子中
ref\u id
34有三个条目,总的count\u值为22
ref\u id
36有两个条目,总计count\u值为13
ref\u id
25有一个条目,总的count\u值为20
所以我期待的就是这样
ref_id
34
25
36
30
我尝试使用groupby
,但我想这并不能解决这个问题,因为我想将单元格中的值相加,然后根据最终计数对其进行排序
关于问题中的条件部分,有一个时间戳列
,只需要获取在特定日期时间之后创建的数据您可以按ref\u id
分组,然后通过count\u value
的sum()
降序排列记录:
select ref_id
from mytable
group by ref_id
order by sum(count_value) desc
您可以向查询中添加where
子句,以实现时间戳列上的过滤器(您在示例数据中没有显示):它位于from
子句和groupby
子句之间
:
| ref_id |
| -----: |
| 34 |
| 25 |
| 36 |
| 30 |
|参考号|
| -----: |
| 34 |
| 25 |
| 36 |
| 30 |
我尝试了您的查询,但该查询仅通过对特定用户的条目数量进行排名来返回数据,我需要它根据count_值从mytable中选择ref_id,count(*),其中DATE(timestamp)>=“2020-01-06”group by ref_id order by sum(count_值)desc@VickySalunkhe例如我不知道你的确切意思。这将产生您所提供的示例数据所期望的结果(我在我的答案中添加了一个小提琴供您参考)。我不知道为什么它第一次不起作用。谢谢:)您没有明显的主键。这很可能会进一步证明是有问题的road@Strawberry列id是主键