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
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.
Nie ma algorytmu podziału na części. Jest randomowy.
Co rozumiesz przez informacje o części w bazie?
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
@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?
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
Tak, jak napisałem. randomowo. są to pomiary siły tensometru. Jest pare cykli w 600 pomiarach (ID)
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
Jednak z ciekawości przetestowałem
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
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?