Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sum over partition  [new]
user333
Guest
declare @t table (a int,b int)
insert into @t values (1,5)
insert into @t values (1,6)



declare @t2 table (a int,c int)
insert into @t2 values (1,4)
insert into @t2 values (1,6)
insert into @t2 values (2,7)

select * from @t t join @t2 t2 on t.a=t2.a

a b a c
1 5 1 4
1 5 1 6
1 6 1 4
1 6 1 6

нужно получить
a__b__c
1__11_20

Не пойму как можно сумировать(t.b) при group by t.a , так чтобы при сумировании вышло 11
12 апр 12, 10:47    [12404008]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
user333,

SUM(DISTINCT b)OVER(PARTITION BY...) ещё не сделали!
SELECT t.a, SUM(DISTINCT t.b) b, SUM(t2.c) с
FROM @t t JOIN @t2 t2 ON t.a=t2.a
GROUP BY t.a;
12 апр 12, 10:53    [12404063]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
user333
Guest
пробую вот так
select t.a,sum(t.b) over (partition by t.a,t.b)
from @t t join @t2 t2 on t.a=t2.a
group by t.a

получаю
Msg 8120, Level 16, State 1, Line 15
Column '@t.b' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
12 апр 12, 10:53    [12404068]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
user333, суммировать оконной функцией в @t по a, затем приджойнить @t2
12 апр 12, 10:54    [12404071]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
user333
Guest
iap, Спасибос!
все больше узнаю про sum :)
12 апр 12, 10:55    [12404079]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
iljy
Member

Откуда:
Сообщений: 8711
user333,

сначала группируете одну таблицу, потом другую, потом соединяете результаты. На кой тут вообще оконные функции??
12 апр 12, 10:56    [12404085]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
SELECT * FROM (
select *, SUM(t.b) OVER (PARTITION BY a) sb from @t t
) t
join @t2 t2 on t.a=t2.a
12 апр 12, 10:56    [12404086]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
iap
user333,

SUM(DISTINCT b)OVER(PARTITION BY...) ещё не сделали!
SELECT t.a, SUM(DISTINCT t.b) b, SUM(t2.c) с
FROM @t t JOIN @t2 t2 ON t.a=t2.a
GROUP BY t.a;

Ну да, ну да.
declare @t table (a int,b int)
insert into @t values (1,5)
insert into @t values (1,6)
insert into @t values (1,6)


declare @t2 table (a int,c int)
insert into @t2 values (1,4)
insert into @t2 values (1,6)
insert into @t2 values (2,7)

12 апр 12, 10:57    [12404097]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
user333
Guest
kDnZP,
и действительно )
12 апр 12, 10:58    [12404107]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
iljy
Member

Откуда:
Сообщений: 8711
user333,

declare @t table (a int,b int)
insert into @t values (1,5)
insert into @t values (1,6)



declare @t2 table (a int,c int)
insert into @t2 values (1,4)
insert into @t2 values (1,6)
insert into @t2 values (2,7)

select t.a, MAX(b) b, SUM(cnt * c) c from 
(select a, sum(b) b, count(*) cnt from @t group by a) t join @t2 t2 on t.a=t2.a
group by t.a
12 апр 12, 11:05    [12404171]     Ответить | Цитировать Сообщить модератору
 Re: sum over partition  [new]
user333
Guest
iljy
user333,

declare @t table (a int,b int)
insert into @t values (1,5)
insert into @t values (1,6)



declare @t2 table (a int,c int)
insert into @t2 values (1,4)
insert into @t2 values (1,6)
insert into @t2 values (2,7)

select t.a, MAX(b) b, SUM(cnt * c) c from 
(select a, sum(b) b, count(*) cnt from @t group by a) t join @t2 t2 on t.a=t2.a
group by t.a

ага, так и буду делать. Я думал, что есть какая то интересная функция для такого суммирования.
Спасибо
12 апр 12, 11:16    [12404280]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить