Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 RollUp + Cube+ Grouping  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: RollUp + Cube+ Grouping  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32167
adimmat
. Я пробовал найти литературу или статьи какие то, чтоб понять, как они работают, нашел, прочел, но не понял, чем они отличаются от обычного группирование и вообще, как с ними работать!
А хелп читали?

По моему, достаточно понятно написано, например:
BOL, GROUP BY (Transact-SQL)
ROLLUP ( )
Формирует статистические строки простого предложения GROUP BY и строки подытогов или строки со статистическими вычислениями высокого уровня, а также строки общего итога.

Количество возвращаемых группирований равно количеству выражений в <составном списке элементов> плюс один. Например, рассмотрим следующую инструкцию.

SELECT a, b, c, SUM ( <expression> )
FROM T
GROUP BY ROLLUP (a,b,c)

Для каждого уникального сочетания значений (a, b, c), (a, b) и (a) формируется одна строка с подытогом. Вычисляется также строка общего итога.

Столбцы свертываются справа налево. Последовательность расположения столбцов влияет на выходное группирование ROLLUP и может отразиться на количестве строк в результирующем наборе.
4 янв 15, 22:53    [17085639]     Ответить | Цитировать Сообщить модератору
 Re: RollUp + Cube+ Grouping  [new]
yaxta
Member

Откуда: азербайджан,баку
Сообщений: 518
adimmat
Привет, Друзья!
Всех с Наступившим Новым Годом!
У меня 3 задания, которые я выполнил, все работает отлично.
Но,есть одна проблема. Преподаватель,хочет, чтобы я использовал конструкции RollUp,Cube,Grouping


а вам точно нужнь RollUp,Cube,Grouping?

Сообщение было отредактировано: 5 янв 15, 15:38
5 янв 15, 11:57    [17086295]     Ответить | Цитировать Сообщить модератору
 Re: RollUp + Cube+ Grouping  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Модератор: Флуд потер. Ведите себя хорошо: праздники, как-никак.


Сообщение было отредактировано: 5 янв 15, 13:58
5 янв 15, 13:58    [17086510]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить