powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL-запрос с оконными функциями
5 сообщений из 5, страница 1 из 1
SQL-запрос с оконными функциями
    #40012027
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Я — новичок в T-SQL, прошу совета.

Есть таблица примерно следующего содержания:
IdNameTypeSumm1AX101AY201AZ302BY702BX103CY203CX403CZ40
Подскажите, пожалуйста, можно ли (если "да", то каким образом) в одном запросе получить из таблицы:
все строки + дополнительный столбец, в котором строки будут ранжированы по ОБЩЕЙ сумме каждой строки из "Name"?
Иначе говоря, получить на выходе следующую таблицу (т.к. общая сумма по CCC - 100,00; по BBB - 80,00; ААА - 60,00):

IdNameTypeSummrnk1AX1011AY2011AZ3012BY7022BX1023CY2013CX4013CZ401

Т.е. получается, что ранжирование должно идти не просто по столбцу "Summ", а по Sum("Summ").
Заранее благодарю за оперативный и содержательный ответ.

P.S. Версия - SQL server 2008r2
...
Рейтинг: 0 / 0
SQL-запрос с оконными функциями
    #40012039
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sviman144,

что вы понимаете под словами " в одном запросе получить "?
Обычно критерием "одного запроса" является "один рекордсет"/"действие над ним", что вполне может содержать кучу подзапросов, соединений и т.д.

PS. И да... У вас точно табличка с rnk правильная? почему-то два ранга с "1"
...
Рейтинг: 0 / 0
SQL-запрос с оконными функциями
    #40012042
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,

1. Да, виноват, в примере ошибся. Правильно:
IdNameTypeSummrnk1AX1031AY2031AZ3032BY7022BX1023CY2013CX4013CZ401

2. Возможно, неправильно выразился.
К таблице №1 (верхняя в первом сообщении), хочу добавить столбец так, чтобы результатом была таблица №2 (нижняя из первого сообщения).
...
Рейтинг: 0 / 0
SQL-запрос с оконными функциями
    #40012043
godsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create table #t (
id int,
Name varchar(10),
Type varchar(10),
Summ int
)
insert into #t (id,Name,	Type,	Summ) values
(1,	'A',	'X',	10),
(1,	'A',	'Y',	20),
(1,	'A',	'Z',	30),
(2,	'B',	'Y',	70),
(2,	'B',	'Z',	10),
(3,	'C',	'Y',	20),
(3,	'C',	'X',	40),
(3,	'C',	'Z',	40)

select #t.*, DENSE_RANK () over (order by sum1 desc) as rnk  from #t
join (select id, sum(Summ) as sum1 from #t group by id  ) t2 on #t.id=t2.id
order by #t.id

DROP TABLE #t

...
Рейтинг: 0 / 0
SQL-запрос с оконными функциями
    #40012057
Sviman144
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
godsql,

Спасибо. Не догадался саму к себе таблицу присоединить (думал "вложить" оконную в оконную, но так, оказывается, нельзя). Делал через два запроса: сначала добавлял столбец с общей суммой (промежуточным запросом), затем вторым запросом вычислял ранг. :)

Вопрос решен. Тему можно считать закрытой.
Еще раз, большое спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL-запрос с оконными функциями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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