Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
7 / 7 / 1
Регистрация: 19.04.2012
Сообщений: 167

Вывести, сколько просроченных товаров находится на каждом из складов в настоящий момент

08.10.2012, 17:55. Показов 7123. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят, прошу помощи, в самом Sql я еще не сильно шарю, по этому слоджные запросы пока писать не умею...
задали домашку, в которой есть такая база данныхhttp://pikucha.ru/i9iGg/thumbn... D0%B4.jpeg
1. Вывести, сколько просроченных товаров находится на каждом из складов в настоящий момент
2. Вывести информацию о том, из какой страны товар является наиболее часто отгружаемым на склады в первом квартале каждого года.
3. Вывести информацию о том, какой из складов чаще всего принимает товар.
4. Посчитать средний срок годности товаров на текущий момент времени по каждому из складов.
5. Посчитать, сколько заказов содержат каждый вид товара.
6. Вывести информацию о том, какая упаковка для товаров чаще всего требуется в заказах.
7. Посчитать среднее количество упаковок товаров в каждом заказе для каждого клиента.

первый запрос я сделал без проблем
во втором запросе для начала пытался хотяб определить товары в первом квартале года таким способом, но не получилось
SQL
1
2
3
SELECT COUNT(размещение.код_товара)
FROM размещение
WHERE DatePart("q",размещение.дата_отгрузки)=TRUE;
в третьем запросе могу тока подсчитать количество принятых товаров на каждом складе, но не знаю как найти макисмальный из них
SQL
1
2
3
4
SELECT COUNT(размещение.отметка_о_получении), размещение.номер_склада
FROM размещение
WHERE (((размещение.отметка_о_получении)=TRUE))
GROUP BY размещение.номер_склада;
а дальше для меня пошли очень трудные запросы, которые я, пока, не представляю, как сделать...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2012, 17:55
Ответы с готовыми решениями:

В исходной строке а определить сколько в ней находится предложений и сколько слов в каждом предложении
В исходной строке а определить сколько в ней находится предложений и сколько слов в каждом предложении. Результат вывести на экран

Учет товаров организации в разрезе складов
Коллеги, подскажите новичку, как быть, если в отчетах видится товар на остатке, но по Организации остаток по нулям (смотрю в подборе) и я...

Создать вычисляемое поле в таблице для определения просроченных товаров
Имеется таблица с данными. В ней есть поле со сроком годности товара и дата изготовления. Как сделать вычисляемое поле, чтобы выводилось в...

6
 Аватар для Remmor
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
09.10.2012, 11:11
Цитата Сообщение от GEN_18 Посмотреть сообщение
2. Вывести информацию о том, из какой страны товар является наиболее часто отгружаемым на склады в первом квартале каждого года.
Как то так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT
 YEAR
 , Country
FROM 
(
 SELECT 
  datepart (yyyy, E2.дата_отгрузки) AS YEAR
  , E1.страна_произв AS Country 
  , COUNT (*) AS QuantityGoods
 FROM  Размещение E2
 LEFT JOIN Товар E1 ON E1.Код_товара=E2.Код_товара
 WHERE datepart (quarter, дата_отгрузки) = 1
 GROUP BY  datepart (yyyy, E2.дата_отгрузки), E1.страна_произв 
) AS temp1
WHERE QuantityGoods = (SELECT MAX (QuantityGoods) FROM (
 SELECT 
  E1.страна_произв AS Country 
  , COUNT (*) AS QuantityGoods
  FROM  Размещение E2
 LEFT JOIN Товар E1 ON E1.Код_товара=E2.Код_товара
 WHERE  datepart (yyyy, DATE)= YEAR
 GROUP BY  E1.страна_произв ) temp2)
Запрос скорей всего можно оптимизировать (чтобы во внешнем WHERE не использовать заново SELECT по уже выбранным таблицам) но как это сделать без использования временных таблиц мне в голову не пришло, может кто тут подскажет?
Другие задачи, если будет время и желание посмотрю, но вообще лучше самому разбираться, больше в голове останется.
0
7 / 7 / 1
Регистрация: 19.04.2012
Сообщений: 167
09.10.2012, 16:03  [ТС]
Remmor, афигеть, да я в жизнь такой запрос не напишу, спасибо большое
попробую проверить его, и понять как он работает.
0
 Аватар для Remmor
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
11.10.2012, 07:08
Во, придумал как оптимизировать запрос:


SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT
 YEAR
 , Country
FROM 
(
 SELECT 
  datepart (yyyy, E2.дата_отгрузки) AS YEAR
  , E1.страна_произв AS Country 
  , COUNT (*) AS QuantityGoods
  , ROW_NUMBER() OVER (PARTITION BY (yyyy, E2.дата_отгрузки) ORDER BY COUNT (*) DESC) AS SortRank
 FROM  Размещение E2
 LEFT JOIN Товар E1 ON E1.Код_товара=E2.Код_товара
 WHERE datepart (quarter, дата_отгрузки) = 1
 GROUP BY  datepart (yyyy, E2.дата_отгрузки), E1.страна_произв 
) AS temp1
WHERE SortRank = 1
Функция ROW_NUMBER() проставляет, так сказать, рейтинг странам по годам в зависимости от кол-ва товаров. Но тут есть одно но, если в одном из годов было 2 и более страны победительницы, то в итог попадет только одна.
0
7 / 7 / 1
Регистрация: 19.04.2012
Сообщений: 167
11.10.2012, 17:06  [ТС]
Remmor, увы, но не работает этот код =(((
говорит, что объект
SQL
1
ROW_NUMBER() OVER (PARTITION BY (yyyy, E2.дата_отгрузки) ORDER BY COUNT (*) DESC)
не может быть найдет ядром

Добавлено через 4 минуты
а по первому твоему примеру, ругается на JOIN, тока на какой - я не знаю, он не показывает
0
 Аватар для Remmor
71 / 71 / 23
Регистрация: 02.02.2012
Сообщений: 309
12.10.2012, 07:06
лучше сюда скопировать текст ошибки.
0
7 / 7 / 1
Регистрация: 19.04.2012
Сообщений: 167
12.10.2012, 11:12  [ТС]
Remmor, давай пока этот запрос оставим в покое, а начнем с того, что уже я сделал(правда это всего лишь 3й запрос), в нем я смог найти максимум
SQL
1
2
3
4
SELECT MAX(отметка)AS [максимум]  FROM (SELECT COUNT(отметка_о_получении) AS [отметка], номер_склада
FROM размещение
WHERE (((размещение.отметка_о_получении)=TRUE))
GROUP BY размещение.номер_склада)z1
но теперь, не знаю, как вывести вместе с максимумом номер склада

Добавлено через 9 минут
о, разобрался как сделать
SQL
1
2
3
4
5
6
7
8
9
SELECT * FROM  (SELECT COUNT(отметка_о_получении) AS [отметка], номер_склада
FROM размещение
WHERE (((размещение.отметка_о_получении)=TRUE))
GROUP BY размещение.номер_склада)
WHERE отметка=(
SELECT MAX(отметка)AS [максимум]  FROM (SELECT COUNT(отметка_о_получении) AS [отметка], номер_склада
FROM размещение
WHERE (((размещение.отметка_о_получении)=TRUE))
GROUP BY размещение.номер_склада)z1)
теперь перейду ко 2му запросу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2012, 11:12
Помогаю со студенческими работами здесь

Выяснить, сколько просроченных заказов у определенного сотрудника
Добрый день. Помогите пожалуйста создать функцию. Цель функции - выяснить сколько просроченных заказов у определенного сотрудника. ...

Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов,
Помогите пожалуйста! Задан некоторый набор товаров. Определить для каждого из товаров, какие из них имеются в каждом из n магазинов,...

Вывести сколько и каких цифр в каждом числе
Есть массив из трех чисел , нужно вывести сколько и каких цифр в каждом числе. Программа работает только для первого числа , дальше счетчик...

"Не удается запустить AMD Catalyst Control Center. В настоящий момент нет параметров". Acer Aspire V5-561g
Здравствуйте, уважаемые! В общем, устал бегать по форумам, ковырять бедный ноут, потому спешу задать вопрос сюда, а именно: что я делаю не...

Найти, сколько в каждом столбце отрицательных элементов. Вывести массив по строкам.
Дан двумерный массив вещественных чисел из 3 столбцов и 4 строк. Найти, сколько в каждом столбце отрицательных элементов. Вывести массив по...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru