SQL查找事件发生时间最长的时间段

时间:2015-10-23 15:19:00

标签: sql sql-server

考虑一个SQL Server 2012表,它基本上记录了谁(成员)借用了哪个图书馆的哪一本书。这个例子是扭曲的。

  • member_id int(成员表的外键)
  • book_id int(书表的外键)
  • borrowed_date datetime

是否有可能编写一个SQL查询,该查询将返回给定书籍借阅最多的时间段,比如说三个月?

我的努力开始于group by book_id开始并结束,只是无法绕过它。

1 个答案:

答案 0 :(得分:0)

这是一个查询,它将为您提供借书最多次数的季度。内部查询返回一个临时表,该表由每个季度组成,其中借用了给定的书(例如book_id=5)。然后我SELECT单个记录,其中借书的次数最多。

SELECT t.theDate, t.theCount
FROM
(
    SELECT CONCAT(YEAR(borrowed_date), '-', QUARTER(borrowed_date)) AS theDate,
        COUNT(*) AS theCount
    FROM table
    WHERE book_id = 5
    GROUP BY CONCAT(YEAR(borrowed_date), '-', QUARTER(borrowed_date))
) t
ORDER BY t.theCount DESC
LIMIT 1