Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
adimmat Member Откуда: Таджикистан Сообщений: 180 |
Привет, Друзья! Всех с Наступившим Новым Годом! Ребята, передо мной стоит след. проблема. У меня 3 задания, которые я выполнил, все работает отлично. Но,есть одна проблема. Преподаватель,хочет, чтобы я использовал конструкции RollUp,Cube,Grouping. Я пробовал найти литературу или статьи какие то, чтоб понять, как они работают, нашел, прочел, но не понял, чем они отличаются от обычного группирование и вообще, как с ними работать! Был бы Вам признателен за помощь и советы. Спасибо! Приведу условия задач и свое решение. 1. Вывести данные обо всех наименованиях сырья с указанием максимальной и средней цены сырья по типам и единицам измерения (сортировать данные по типам, единицам измерения и наименованиям сырья). SELECT [Materials].[Material_Type_ID] AS 'Тип сырья', [Materials].[Measurement_ID] AS 'Ед. измер-я', [Materials].[Material] AS 'Сырье', [Materials].[Material_Price] AS 'Цена' FROM [dbo].[Materials] ORDER BY [Materials].[Material_Type_ID], [Materials].[Measurement_ID], [Materials].[Material] SELECT MAX(Materials.Material_Price) AS 'Макс. цена', AVG(Materials.Material_Price) AS 'Сред. цена' FROM [dbo].[Materials] GROUP BY [Materials].[Material_Type_ID] 2. Вывести данные обо всех кодах сырья с указанием общего объема сырья, поступившего на основной склад за 2002 год. SELECT [Storage].[КодСырья], SUM([Storage].[Цена] * [Storage].[Количество]) N'Общ. объем сырья' FROM dbo.Storage WHERE [Storage].[КодСклада] = 1 AND YEAR([Storage].[Датадвижения]) LIKE '2002' GROUP BY [Storage].[КодСырья] ORDER BY [Storage].[КодСырья] 3. Сформировать групповой запрос на выборку данных о количестве наименований напитков, поступивших на разные склады в четные недели 2003 года; SELECT [Materials].[Material], [Storage].[Количество], [Stores].[Store] FROM [dbo].[Materials_Types] LEFT JOIN [dbo].[Materials] ON [Materials_Types].[ID] = [Materials].[Material_Type_ID] LEFT JOIN [dbo].[Storage] ON [Materials].[ID] = [Storage].[КодСырья] LEFT JOIN [dbo].[Stores] ON [Storage].[КодСкладаДвиж] = [Stores].[ID] WHERE [Materials_Types].[ID] = 9 AND (DATEPART (YEAR, [Storage].[Датадвижения]) BETWEEN '2003' AND '2004') AND --([Storage].[Датадвижения] >= '2003-01-01' AND [Storage].[Датадвижения] < '2004-01-01') AND --([Storage].[Датадвижения] BETWEEN '2003-01-01' AND '2004-01-01') AND (DATEPART (ISO_WEEK, [Storage].[Датадвижения]) % 2 = 0) GROUP BY [Materials].[Material], [Storage].[Количество], [Stores].[Store] ORDER BY [Storage].[Количество] |
4 янв 15, 15:48 [17084770] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31778 |
По моему, достаточно понятно написано, например:
|
||||
4 янв 15, 22:53 [17085639] Ответить | Цитировать Сообщить модератору |
yaxta Member Откуда: азербайджан,баку Сообщений: 518 |
а вам точно нужнь RollUp,Cube,Grouping? Сообщение было отредактировано: 5 янв 15, 15:38 |
||
5 янв 15, 11:57 [17086295] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37139 |
Сообщение было отредактировано: 5 янв 15, 13:58 |
|
5 янв 15, 13:58 [17086510] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |