powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом, вывести поле не включая в group by with rollup
7 сообщений из 7, страница 1 из 1
Помогите с запросом, вывести поле не включая в group by with rollup
    #39797885
Oleg_234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите с запросом ниже, для примера. К сожалению сиквел знаю плохо.
Собственно требуется вывести поле warranty.


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @t table(
	id int identity not null, 
	category varchar(10), 
	subcategory varchar(10), 
	name varchar(10), 
	amount money,
	warranty int)

insert into @t
values 
	('смартфон', 'samsung', 'A3', 50, 12), ('смартфон', 'samsung', 'A5', 100, 12), ('смартфон', 'samsung', 'A7', 200, 12),
	('смартфон', 'sony', '1', 150, 24), ('смартфон', 'sony', '10', 100, 24),
	('планшет', 'samsung', '9.8', 150, 12), ('планшет', 'samsung', '8.0', 120, 12),
	('планшет', 'xiaomi', '9.8', 100, 24), ('планшет', 'xiaomi', '8.2', 70, 24)

select t.category, t.subcategory, t.name, sum(amount) as sum
from @t t
group by 
	t.category, t.subcategory, t.name WITH ROLLUP
order by
	GROUPING(t.category) DESC, t.category, GROUPING(t.subcategory) DESC, t.subcategory, GROUPING(t.name) DESC, t.name
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39797916
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно выбор невелик

1. Включить, таки, в group by
2. Использовать мах или min, понимая последствия.
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39797919
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_234,

У вас нарушена 2НФ, архитектора гнать. Если это учебный пример, то, как правильно сказано, либо включать в group by, либо применять max|min|avg
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39797966
Oleg_234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы. Как оказалось не совсем удачный пример, поле которое нужно вывести это строка, так что max|min|avg не подходят наверное.
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39798023
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg_234Спасибо за ответы. Как оказалось не совсем удачный пример, поле которое нужно вывести это строка, так что max|min|avg не подходят наверное.
Почему?
avg - не работает, а min и max - вполне.
Строки - не числовые, но сравнимые объекты.
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39798057
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Воронцов,

А что 2НФ это божественная архитектура, от которой нельзя отклоняться?

В данном случае рекомендую посмотреть GROUP BY GROUPING SETS и оконные функции (OVER PARTITIOB BY). С LAST_VALUE и FIRST_VALUE всегда можно выкрутиться.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SET LANGUAGE Russian

declare @t table(
	id int identity not null, 
	category nvarchar(10), 
	subcategory varchar(10), 
	name varchar(10), 
	amount money,
	warranty int)

insert into @t
values 
	(N'смартфон', 'samsung', 'A3', 50, 12), (N'смартфон', 'samsung', 'A5', 100, 12), (N'смартфон', 'samsung', 'A7', 200, 12),
	(N'смартфон', 'sony', '1', 150, 24), (N'смартфон', 'sony', '10', 100, 24),
	(N'планшет', 'samsung', '9.8', 150, 12), (N'планшет', 'samsung', '8.0', 120, 12),
	(N'планшет', 'xiaomi', '9.8', 100, 24), (N'планшет', 'xiaomi', '8.2', 70, 24)

select t.category, t.subcategory, t.name, sum(amount) as sum
from @t t
group by grouping sets 
	((t.category, t.subcategory), (t.category, t.subcategory, t.name))
order by
	t.category, t.subcategory, t.name
...
Рейтинг: 0 / 0
Помогите с запросом, вывести поле не включая в group by with rollup
    #39798489
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

А зачем выкручиваться если можно сразу сделать по уму? НФ не "божественная архитектура", а применение логики к архитектуре бд. Если Вам нравится не уменьшать, а увеличивать количество бардака и нелогичности, то не применяйте.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите с запросом, вывести поле не включая в group by with rollup
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]