【问题标题】:SQL to find the period of time when an event occured the mostSQL查找事件发生最多的时间段
【发布时间】:2015-10-23 23:44:12
【问题描述】:

考虑一个 SQL Server 2012 表,该表实质上记录了谁(成员)在图书馆的哪个日期借了哪本书。这个例子是扭曲的。

  • member_id int(成员表的外键)
  • book_id int(书表的外键)
  • borrowed_date 日期时间

是否可以编写一个 SQL 查询来返回时间段,比如三个月,某本书被借得最多的时间?

我的努力在group bybook_id 开始和结束,只是无法理解它。

【问题讨论】:

  • 1) SQL 可以做很多事情(询问是否可能是愚蠢的)2) 创建示例数据sqlfiddle.com 3) 分享所需的输出 4) 展示研究成果并分享您的尝试
  • @lad2025 可以。谢谢。
  • 提示:按时间段分组。
  • 请提供一些关于您想要涵盖的时间段的信息。您将无法涵盖任何期。如果您说“3 个月”,请始终从月初或某处开始。你提供的信息还不够……
  • @TabAlleman 很棒,按时间段分组,计数最多。认为应该这样做。

标签: sql sql-server


【解决方案1】:

这是一个查询,它将为您提供一本书被借阅次数最多的季度。内部查询返回一个临时表,其中包含借阅给定书籍(例如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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-09-22
    相关资源
    最近更新 更多