Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
fantasia Member Откуда: Сообщений: 12 |
есть таблица вида client, good, order_id, order_date нужно добавить столбец с количеством покупок (count(distinct order_id)) клиента за последний месяц относительно даты покупки |
2 мар 15, 19:59 [17334159] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
Добавляйте, тут вряд ли кто будет возражать. |
2 мар 15, 20:03 [17334182] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
добавить поле в таблицу? или в результат селекта из неё? если второе, то смотреть в сторону COUNT(...) over(partition by ...) |
2 мар 15, 20:04 [17334193] Ответить | Цитировать Сообщить модератору |
fantasia Member Откуда: Сообщений: 12 |
Добрый Э - Эх, в результат селекта смотрел ничего путного в голову не приходит, поэтому обратился за помощью во-первых count(distinct ...) в оконной функции не работает, во-вторых чтобы ограничить именно месяцем всю таблицу, получается, нужно сджойнить с таблицей где каждому клиенту соответвуют все записи календаря. А это ну просто очень сильно снижает производительность. может есть более простой путь? |
2 мар 15, 20:13 [17334240] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
fantasia, может и есть, но не только лишь все могут без юзабильного репрезентативного набора тестовых данных и желаемого результата на них написать желаемый запрос. |
2 мар 15, 20:16 [17334257] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
fantasia, но как вариант, можешь покурить в сторону [cross | outer] apply |
2 мар 15, 20:19 [17334265] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
|
||
2 мар 15, 22:44 [17334773] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
select *, (select count(*) from mytable b where b.client = a.client and b.order_date between dateadd(mm, -1, a.order_date) and dateadd(dd, -1, a.order_date)) from mytable a |
||
3 мар 15, 09:25 [17335463] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |