sql - PostgreSQL:如果有平局,则基于另一列排序?
问题描述
我如何根据两列对行进行排序,首先按 排序column1
,但如果行具有相同的值(并列),则按 排序column2
?
id | likes | date
---+-------+-----
0 0 203
1 8 100
2 4 24
3 1 340
4 4 262
5 4 82
因此,对于上面的示例表,likes
首先基于排序,然后对于具有 的 3 行4
,排序基于date DESC
?
注意:date
只有任意的 unix 时间戳值
编辑: 这是我正在使用的实际查询:
SELECT * FROM (SELECT posts.id, posts.topic_id, topics.name,
posts.author_id, users.username, users.profile_pic, posts.date_posted,
posts.body, posts.coordinates, (SELECT COUNT(*) FROM post_likes WHERE
post_likes.post_id = posts.id) AS num_likes,
ROW_NUMBER () OVER (ORDER BY (SELECT COUNT(*) FROM post_likes WHERE
post_likes.post_id = posts.id) DESC, posts.date_posted DESC) AS RowNum
FROM posts INNER JOIN users ON posts.author_id = users.id INNER JOIN
topics ON posts.topic_id = topics.id WHERE author_id = 'foo') AS
RowConstrainedResult WHERE RowNum > 0 AND RowNum <= 20 ORDER BY RowNum
解决方案
你会命令它是
<
select
from table
>
order by likes desc
, date desc
推荐阅读
- sql - 使用 django orm 加入和聚合
- c# - HttpClient.SendAsync - 找不到与此错误代码关联的文本。'':发现无效字符
- php - 一键显示两个图像。PHP, AJAX
- java - 如何从客户端程序中获取操作系统名称?
- python - MXNet Gluon - 以编程方式访问神经网络层尺寸?
- javascript - jQuery - 每当单击重置时,它不会重置块
- azure-cosmosdb - 如何编写一个查看所有数组条目的查询?
- powershell - 如何使用 Powershell 在 Outlook 中的投票按钮的交付选项字段中添加联系人?
- google-cloud-vision - Cloud vision api face detection no image present 错误
- flutter - 如何将默认 dateTime 设置为比当前时间提前 2 小时?