2015-10-23 5 views
0

Рассмотрите таблицу SQL Server 2012, в которой, по существу, записывается, кто (участник) заимствовал книгу, с которой дата в библиотеке. Пример искажен.SQL, чтобы найти период времени, когда наибольшее событие произошло

  • member_id INT (внешний ключ к таблице членов)
  • book_id INT (внешний ключ заказать столик)
  • borrowed_date DateTime

Можно ли написать SQL запрос, который будет возвращать период времени, скажем, три месяца, когда данная книга была заимствована больше всего?

Мои усилия начались и закончились в group bybook_id, просто не смогли обернуть вокруг него голову.

+0

1) SQL может сделать много (запрашиваемая STH возможно глупо) 2) Создание выборки данных http://sqlfiddle.com 3) Доля желаемый результат 4) Показать усилие исследования и делитесь попытка – lad2025

+0

сэмпл помогите нам – Ragul

+0

@ lad2025 сделаю. спасибо. – kmansoor

ответ

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 
Смежные вопросы