SQL - запрос записей в течение неопределенного интервала
Мне нужно получить следующие данные из Orders
стол в Northwind
база данных с использованием SQL (точнее, SQL Server):
- Найти всех клиентов (
CustomerID
) которые разместили не менее 3 заказов в течение 6 месяцев (OrderDate
).
Таким образом, для следующих данных запрос должен вернуть 1
==========================
| CustomerID | OrderDate |
==========================
| 1 | 2000-1-1 |
--------------------------
| 1 | 2000-1-5 |
--------------------------
| 1 | 2000-4-30 |
--------------------------
| 2 | 2000-1-1 |
--------------------------
| 2 | 2000-5-30 |
--------------------------
2 ответа
Решение
SELECT N1.CustomerID, COUNT(N2.OrderDate) FROM Northwind N1
INNER JOIN Northwind N2
ON N1.CustomerID=N2.CustomerID
AND N1.OrderDate<=Dateadd(MONTH, 6, N2.OrderDate)
GROUP BY N1.CustomerID
HAVING COUNT(N2.OrderDate)>=3
Попробуйте следующее:
SELECT OrderDate, CustomerID FROM orders GROUP BY OrderDate HAVING COUNT(CustomerID) >= 3 ORDER BY COUNT(CustomerID) DESC