funkcja MAX w SQL

0

Witam wszystkich
bardzo proszę o pomoc, zapytanie poniższe zwraca mi wartość maksymalną "number" dla wszystkich kombinacji cId oraz mId z tablicy "Measurement"

SELECT "cId", "mId", MAX("number") as "Maxnumber" FROM "Measurement" 
GROUP BY "cId", "mId";

Jak zmodyfikować takie zapytanie by otrzymać wyniki tylko dla kombinacji cId i mId dla których max number jest równy np. 1 ?
Pozdrawiam

0

Mógłbyś podać przykład wartości cId, mId oraz spodziewane wyniki?

Co na prawdę próbujesz zrobić?

0

dla MS SQL będzie coś takiego

SELECT cId, mId, MAX(number) Maxnumber FROM Measurement GROUP BY cId, mId
having(max(number))=1
0
Riddle napisał(a):

Mógłbyś podać przykład wartości cId, mId oraz spodziewane wyniki?

Co na prawdę próbujesz zrobić?

Paweł Dmitruk napisał(a):

dla MS SQL będzie coś takiego

SELECT cId, mId, MAX(number) Maxnumber FROM Measurement GROUP BY cId, mId
having(max(number))=1

OK wszystko działa dzięki wielkie
Mam jeszcze jedno pytanie... to jest sedno mojego problemu mogę w ten sam sposób usunąć te rekordy z bazy 9tzn te dla których max(number) = 1) ?

0

To zapytanie (za które bardzo dziękuję) pokazuje wszystkie rekordy dla których max(number) = 1
jeżeli teraz chcę usunąć te rekordy z bazy to jak zastosować funkcję DELETE ?

SELECT cId, mId, MAX(number) Maxnumber FROM Measurement GROUP BY cId, mId
having(max(number))=1
0

Nie zrobisz delete na zapytaniu grupujacym. Pytanie co wyróżnia rekord do usunięcia?

0

Witam dzięki za reakcję
Muszę usunąć te rekordy z tablicy Measurement, dla których maksymalna liczba pomiarów jest równa 1 max(number) = 1

0

To wiem, pytanie było co wyróżnia taki rekord, cię, czy może coś i mid

0

jeżeli chcesz usunąć wszystkie pary cid-mid dla których maksymalna wartość kolumny number to 1, to możesz zrobić za pomocą join-a:

delete m from Measurement m inner join (SELECT cId, mId FROM Measurement GROUP BY cId, mId having(max(number))=1) f on (m.cid=f.cid and m.mid=f.mid)
0

OK rozumie
w tablicy Measurement mam min trzy kolumny cId oraz mId no i kolumnę number gdzie rejestrowane są kolejno pomiary. Muszę usunąc te rekordy gdzie dla kombinacji wartości cId oraz mId max number = 1
prosze o pomoc, dziękuje

0

@Paweł Dmitruk już ci odpowiedział jak to zrobić.

0

Witam ponownie
Otrzymuję syntax error dla delete m pracuje w postgresie

delete m from Measurement m inner join (SELECT cId, mId FROM Measurement GROUP BY cId, mId having(max(number))=1) f on (m.cid=f.cid and m.mid=f.mid)

0

w PostgreSQL powinno zadziałać:

delete from Measurement m using (SELECT cId, mId FROM Measurement GROUP BY cId, mId having(max(number))=1) f where m.cid=f.cid and m.mid=f.mid

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