Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
1

Написать запрос, для подсчета количества заказов

18.06.2015, 11:50. Просмотров 717. Ответов 11
Метки нет (Все метки)

Есть таблица с заказами "orders", где каждый заказ уникален и содержит в себе информацию о клиенте и прочую. Написан запрос, который подсчитывает количество заказов (строк), в которых строго повторяется связка *id клиента - ФИО - Телефон* минимум 10 раз за последние 60 дней:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DECLARE 
 @days INT=60 -- Последние 60 дней
,@lim INT=10 -- Минимальное количество заказов к отображению 
,@dom INT=2 -- ID Диспетчерской
,@UTC INT=3 -- Часовой пояс (значение может быть отрицательным)
 
 
SELECT
 id_client AS 'ID клиента'
,fio_client AS 'ФИО клиента'
,phone_client AS 'Телефон клиента'
,COUNT(*) AS 'К-во заказов'
 
FROM orders
 
WHERE 
    id_domain=@dom
AND create_date_time + (@UTC/24.0) BETWEEN GETDATE()-@days AND GETDATE()
 
GROUP BY
 id_client
,fio_client
,phone_client
HAVING COUNT(*)>=@lim;
Фактически, это запрос на отображение только тех клиентов, которые за последние 60 дней совершили не меньше 10 заказов (с количеством). Помогите, пожалуйста, дописать запрос так, чтобы отображались только те клиенты, которые совершили за последние 60 дней не менее 10 заказов, но, конкретно, за последние 7 дней (можно @days2) не совершили ни одного. Заранее очень благодарен!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.06.2015, 11:50
Ответы с готовыми решениями:

Запрос для нахождения количества
Здравствуйте, Помогите написать такой запрос: даны таблицы Группа(группа,...

Запрос для поиска количества полученных товаров
Добрый день,есть такая таблица tid ...

Запрос, возвращающий первые 5 заказов по каждому CustomerID
Write a query which returns first 5 orders for each customer id, the employee...

Запрос: вывести фамилию продавца, который заключил максимальное количество заказов
Ребят пожалуйста помогите,нужно вывести фамилию продавца, который заключил...

Написать триггер для учета количества книг
Здравствуйте, прошу помощи с задачкой Есть таблица с базой книг, с полями:...

11
Serpentariy
99 / 98 / 40
Регистрация: 09.07.2013
Сообщений: 195
18.06.2015, 11:57 2
T-SQL
1
2
..
HAVING COUNT(*)>=@lim AND COUNT(CASE WHEN create_date_time + (@UTC/24.0) BETWEEN GETDATE()-@days2 AND GETDATE() THEN 1 ELSE 0 END) = 0
0
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
18.06.2015, 13:25  [ТС] 3
Цитата Сообщение от Serpentariy Посмотреть сообщение
SQL
1
HAVING COUNT(*)>=@lim AND COUNT(CASE WHEN create_date_time + (@UTC/24.0) BETWEEN GETDATE()-@days2 AND GETDATE() THEN 1 ELSE 0 END) = 0
Попробовал, теперь пустоту показывает Жесть, уже столько всего перепробовал, что голова кругом.
0
iap
893 / 620 / 128
Регистрация: 27.11.2009
Сообщений: 1,840
18.06.2015, 13:52 4
Чего-то, у меня дежавю! А разве такой темы вчера не было?
0
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
18.06.2015, 14:00  [ТС] 5
Цитата Сообщение от iap Посмотреть сообщение
Чего-то, у меня дежавю! А разве такой темы вчера не было?
Ну она как-то закрылась, а работа стоит
0
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
18.06.2015, 15:54 6
Лучший ответ Сообщение было отмечено Вася Петя как решение

Решение

Цитата Сообщение от Вася Петя Посмотреть сообщение
Попробовал, теперь пустоту показывает
там по ошибке вместо SUM написано COUNT

исправьте - все заработает
1
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
18.06.2015, 16:01  [ТС] 7
Цитата Сообщение от cygapb-007 Посмотреть сообщение
там по ошибке вместо SUM написано COUNT
исправьте - все заработает
Попробовал, теперь ругается на синтаксис (*) - вместо звездочки нужно указать конкретно поле, если допустим указываю айди клиента, то суммирует значения айди
0
invm
1907 / 1291 / 388
Регистрация: 02.06.2013
Сообщений: 3,280
18.06.2015, 16:01 8
Или оставьте count и уберите ветку else в case.
0
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
18.06.2015, 16:58  [ТС] 9
Цитата Сообщение от cygapb-007 Посмотреть сообщение
там по ошибке вместо SUM написано COUNT
исправьте - все заработает
Попробовал, теперь ругается на синтаксис (*) - вместо звездочки нужно указать конкретно поле, если допустим указываю айди клиента, то суммирует значения айди
Цитата Сообщение от cygapb-007 Посмотреть сообщение
там по ошибке вместо SUM написано COUNT
исправьте - все заработает
Огромное спасибо, синьор! Я дуралей в запаре все каунты на сум махнул и еще удивился, че это у меня SQL на синтаксис ругается Поспокойнее стало, еще раз на запрос взглянул и сразу же понял в чем соль. Теперь все работает огонь! Правда мне теперь новую задачу поставили посложнее... так что пошел я с ней сражаться. Еще раз спасибо большое!
0
Serpentariy
99 / 98 / 40
Регистрация: 09.07.2013
Сообщений: 195
18.06.2015, 20:18 10
Всё правильно invm написал. Нужно было ветку else убрать. Я её поставил дабы избежать сообщений о том, что NULL-овые значения проигнорированы, но забыл SUM поставить вместо COUNT )))
0
Вася Петя
0 / 0 / 0
Регистрация: 27.11.2014
Сообщений: 21
19.06.2015, 11:31  [ТС] 11
Цитата Сообщение от Serpentariy Посмотреть сообщение
Всё правильно invm написал. Нужно было ветку else убрать. Я её поставил дабы избежать сообщений о том, что NULL-овые значения проигнорированы, но забыл SUM поставить вместо COUNT )))
Проверил. С веткой else работает правильно и грамотно, без ветки else отображает пустоту как бы я не менял переменные @days @lim @days2
0
invm
1907 / 1291 / 388
Регистрация: 02.06.2013
Сообщений: 3,280
19.06.2015, 12:38 12
Цитата Сообщение от Вася Петя Посмотреть сообщение
Проверил. С веткой else работает правильно и грамотно, без ветки else отображает пустоту как бы я не менял переменные @days @lim @days2
Значит неправильно проверяли.
0
19.06.2015, 12:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2015, 12:38

Написать запрос для школьного журнала
нужно написать запрос который результат будет точно также как и в школьных...

Написать запрос: средняя стипендия для старшекурсников
Здравствуйте. Помогите, пожалуйста, написать запрос. Задача такая: "Пусть...

Написать запрос для вывода пункта затрат
Код Название План Факт 1 Электроэнергия 400 900...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru