Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Математический запрос SQL  [new]
FastTI
Member

Откуда:
Сообщений: 44
Здравствуйте,

посдкажите пожалуйста как посчитать у квадрата чисел (матрицы) вида

1 2 3
4 5 6
7 8 9

сумму чисел по диагонали
размер квадрата может меняться
11 янв 17, 15:17    [20094115]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 34228
А квадрат где? В воздухе висит?
11 янв 17, 15:20    [20094126]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
FastTI
Member

Откуда:
Сообщений: 44
Гавриленко Сергей Алексеевич,

SQL server 2008R2
11 янв 17, 15:25    [20094153]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Владислав Колосов
Member

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

SQL с матрицами не работает. Или по принципу "очень нужно"?
11 янв 17, 15:27    [20094165]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
FastTI
Member

Откуда:
Сообщений: 44
Владислав Колосов,

именно по этому принципу видимо) просто задача именно так звучит... может знает кто
11 янв 17, 15:30    [20094182]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 34228
FastTI
Владислав Колосов,

именно по этому принципу видимо) просто задача именно так звучит... может знает кто
Раз очень нужно, выпулняйте пункт 6.
11 янв 17, 15:33    [20094192]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
invm
Member

Откуда: Москва
Сообщений: 7033
declare @t table (c1 int, c2 int, c3 int);
insert into @t
values
(1, 2, 3),
(4, 5, 6),
(7, 8, 9);

declare @x xml, @n int = 2;

select @x = (select row_number() over (order by (select 1)) as [@rn], * from @t for xml path('row'), type);
select @x.query('sum(for $r in (/row[position() <= sql:variable("@n")]) let $p := $r/@rn return $r/*[position() = $p])').value('.', 'int');
11 янв 17, 15:59    [20094354]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
iap
Member

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

а определитель произвольной матрицы слабО?
11 янв 17, 16:05    [20094390]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 4372
Для решения задачи средствами реляционной алгебры квадрат должен быть сохранён в виде отношения tbl1:

stringcolumnvalue
111
122
133
214
225
236
317
328
339


Задача решается запросом:

select sum(values) sumValue from tbl1 where string = column
11 янв 17, 16:12    [20094446]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 42920
Владислав Колосов
Для решения задачи средствами реляционной алгебры квадрат должен быть сохранён в виде:

1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
1,2,1
Чего-то сомневаюсь... Все строки одинаковые?
Надо три колонки: (i,j,value), где i, j - индексы элемента матрицы
11 янв 17, 16:12    [20094450]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Wlr-l
Member

Откуда:
Сообщений: 390
Владислав Колосов,
where string = column

Так мы найдем только сумму главной диагонали.

У invm можно найти сумму любой диагонали (@n)
11 янв 17, 16:19    [20094495]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Владислав Колосов
Member

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

страницу случайно переключил. Это сообщение надо удалить.
11 янв 17, 16:25    [20094537]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 2066
Wlr-l
Владислав Колосов,
where string = column

Так мы найдем только сумму главной диагонали.

У invm можно найти сумму любой диагонали (@n)

ну тут можно исходя из смещения к галвной
11 янв 17, 16:29    [20094564]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Wlr-l
Member

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

Да, можно, но смещение относительно главной диагонали - это сложно,
проще по номеру строки:

1-я - 1;
2-я - 15;
3-я - 14.
11 янв 17, 16:40    [20094627]     Ответить | Цитировать Сообщить модератору
 Re: Математический запрос SQL  [new]
Wlr-l
Member

Откуда:
Сообщений: 390
Wlr-l,

Я не прав, нужно действительно относительно главной диагонали.
11 янв 17, 16:44    [20094671]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить