根据访问次数对表进行排序,并根据日期时间对表进行加权

时间:2020-05-02 04:25:29

标签: sql-server sorting

我想根据以下顺序对SQL Server表进行排序:

  1. 最近7天插入的访问量最高的记录排在第一位
  2. 然后,过去7天之前插入的所有记录都是按访问计数desc得出的。

样本数据:

Id | Title | CreatedOn   | VisitCount
1  | One   | 2020-04-20  | 51
2  | Two   | 2020-04-22  | 101
3  | Three | 2020-04-25  | 30
4  | Four  | 2020-04-27  | 25
5  | Five  | 2020-04-29  | 30
6  | Six   | 2020-04-30  | 42
7  | Seven | 2020-05-01  | 15

预期结果通过假设当前日期为2020-05-02

Id | Title | CreatedOn   | VisitCount
6  | Six   | 2020-04-30  | 42
5  | Five  | 2020-04-29  | 30
7  | Seven | 2020-05-01  | 15
2  | Two   | 2020-04-22  | 101
1  | One   | 2020-04-20  | 51
3  | Three | 2020-04-25  | 30
4  | Four  | 2020-04-27  | 25

如何完成此查询

SELECT Id, Title, CreatedOn, VisitCount FROM Posts
ORDER BY .........

1 个答案:

答案 0 :(得分:1)

使用两层order by子句:

SELECT Id, Title, CreatedOn, VisitCount
FROM Posts
ORDER BY
    CASE WHEN DATEDIFF(day, CreatedOn, GETDATE()) < 7 THEN 0 ELSE 1 END,
    VisitCount DESC;