Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Трость
Guest |
Доброго времени суток. У меня есть таблица с несколькими полями: ID Key Sum 1 1 1000 1 2 500 1 3 250 2 4 500 2 5 800 мне нужно получить запрос просуммировав поля по ID, т.е.: ID Key Sum SumID 1 1 1000 1750 1 2 500 1750 1 3 250 1750 2 4 500 1300 2 5 800 1300 Как это можно выразить через select с минимальной нагрузкой на сервер, строк может быть много, 50000 и более? |
16 июн 15, 11:24 [17775315] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
...sum(sum) over(partition by id) as SumId ... и 50000 строк - эт оочень мало в рамках современных ИС и СУБД |
16 июн 15, 11:30 [17775371] Ответить | Цитировать Сообщить модератору |
Трость
Guest |
Добрый Э - Эх, Никогда не использовал over А множите привести пример с использованием over(partition by id), а если получится касаемо моего маленького примера)) |
16 июн 15, 11:35 [17775413] Ответить | Цитировать Сообщить модератору |
londinium Member Откуда: Киев Сообщений: 1193 |
WITH CTE(ID,KEYY,SUMM) AS ( SELECT 1, 1, 1000 UNION ALL SELECT 1, 2, 500 UNION ALL SELECT 1, 3, 250 UNION ALL SELECT 2, 4, 500 UNION ALL SELECT 2, 5 ,800 ) SELECT C.ID,C.KEYY,C.SUMM, SUM(SUMM)OVER(PARTITION BY C.ID)A FROM CTE C |
16 июн 15, 11:39 [17775451] Ответить | Цитировать Сообщить модератору |
Добрый Э - Эх
Guest |
Трость, я привел дословный текст того, что тебе нужно вставить в Select-лист своего запроса. единственное, что если поле и в самом деле называется sum, то лучше указывать его в квадратных скобках. |
16 июн 15, 11:40 [17775468] Ответить | Цитировать Сообщить модератору |
Трость
Guest |
Супер, а если нужно получить ещё колонку, сумму всех строк, то как? |
||
16 июн 15, 11:54 [17775597] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
16 июн 15, 11:57 [17775612] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |