在MySQL中,如何通过对一列中的多行数据进行计数并在一定条件下进行排序

在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值

我有一张像下面这样的桌子

编辑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 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是主键