Funkcja zwracająca MAX.

0

Cześć, mam bazę danych o następującym wyglądzie.
ID Pomiar
0 3
1 5
2 0
3 0
4 1
5 7
6 10
7 0
8 0
9 0
10 23
11 30
12 21
itd. itd.
Czy jest mozliwosc stworzenia zapytania, które zwróci mi wartość MAX z pierwszej czesci (ID = 0,1), z drugiej cześci(4,5,6), z trzeciej itd.
Czyli miałbym wartości MAX = 5, 10, 30.
Dodam, że ID nie jest sztywne, i moze sie zmieniac.
Pozdrawiam

0

Da się, o ile informacja o "części" też jest w bazie a nie tylko w twojej głowie... Wystarczy zrobić wtedy grupowanie po ID części.

0

Nie ma algorytmu podziału na części. Jest randomowy.
Co rozumiesz przez informacje o części w bazie?

0

Prawdopodobnie chodzi o ekstremum (maksimum) lokalne
O ile ID idą po kolei i przyjmiemy że patrzymy na sąsiednie dwa elementy, wtedy wystarczy

SELECT current.ID, current.Pomiar FROM tabela current LEFT JOIN tabela prev ON prev.ID = a.ID - 1 LEFT JOIN tabela next ON next.ID = a.ID + 1 WHERE current.Pomiar > COALESCE(prev.Pomiar, 0) AND next.Pomiar < COALESCE(current.Pomiar, 0)

nietestowane ale powinno dać w wyniku:

1     5
6     10
11    30
0

@mistiq_secret ale co to są za części? :D Przecież o to się rozbija cały problem. Czemu częścią jest (4,5,6) a nie (4,5,6,7) albo 1-10?

0

przepraszam mała pomyłka, powinno być raczej:

WHERE current.Pomiar > COALESCE(prev.Pomiar, 0) AND COALESCE(next.Pomiar, 0) < current.Pomiar

nadal nietestowane

Jednak z ciekawości przetestowałem

http://sqlfiddle.com/#!9/02b8a/4

0

Tak, jak napisałem. randomowo. są to pomiary siły tensometru. Jest pare cykli w 600 pomiarach (ID)

0
mistiq_secret napisał(a):

Tak, jak napisałem. randomowo. są to pomiary siły tensometru. Jest pare cykli w 600 pomiarach (ID)

musisz zrozumieć że dopóki nie sprecyzujesz w jaki sposób podzieliłeś sobie te pomiary na "części" to nie będzie się tego zaprogramować

najpierw opisz co Tobą kierowało że wybrałeś takie a nie inne ID jako części i krok po kroku opisz jak to zrobić - podział który zaproponowałeś nie jest w żaden sposób logiczny

0

Jednak z ciekawości przetestowałem

http://sqlfiddle.com/#!9/02b8a/4

Przekopiowałem to do siebie. mam sql 2008 management studio.
Error: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'current'.

Podkreśla również słowa prev & next

myśleżejestem napisał(a):
mistiq_secret napisał(a):

Tak, jak napisałem. randomowo. są to pomiary siły tensometru. Jest pare cykli w 600 pomiarach (ID)

musisz zrozumieć że dopóki nie sprecyzujesz w jaki sposób podzieliłeś sobie te pomiary na "części" to nie będzie się tego zaprogramować

najpierw opisz co Tobą kierowało że wybrałeś takie a nie inne ID jako części i krok po kroku opisz jak to zrobić - podział który zaproponowałeś nie jest w żaden sposób logiczny

Bo części nie są logiczne. Mam tensometr ktory wykonuje rozne testy(około 30) i zapisuje wyniki do bazy danych.
To w jaki sposob tabela bedzie podzielona, zalezy od danego testu i pomiarów tensometru

0

Bo części nie są logiczne. Mam tensometr ktory wykonuje rozne testy(około 30) i zapisuje wyniki do bazy danych.
To w jaki sposob tabela bedzie podzielona, zalezy od danego testu i pomiarów tensometru

czyli kompletnie nie pamiętasz dlaczego napisałeś:

z pierwszej czesci (ID = 0,1), z drugiej cześci(4,5,6), z trzeciej itd.
Czyli miałbym wartości MAX = 5, 10, 30.

po prostu te liczby pojawiły się w Twojej głowie, tak?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0