![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 17.04.2013 Ostrzeżenie: (0%) ![]() ![]() |
witam, mam tabele
grupa | ilosc gr1 | 3 gr2 | 2 gr3 | 6 gr1 | 2 gr2 | 4 chciałbym aby w wyniku zapytania otrzymać gr1 | 5 gr2 | 6 gr3 | 6 jest jakis operator zliczajacy wartosci pol dla danej grupy? koniecznie wartosci nie ilosc tj w przypadku COUNT(*) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
WITH tabela AS
( SELECT 'a' grupa, 5 ilosc UNION SELECT 'b', 6 UNION SELECT 'c', 6 ) Ten fragment zastępuje tabelę - nie miałem danych, więc musiałem je jakoś spreparować. Jak widać tabela nazywa się "tabela" i ma dwa pola "grupa", "ilosc". SELECT *, ilosc*100./sum(ilosc) over() FROM tabela To wyświetla wszystkie pola - * i dodatkowo jedno pole wyrażone przez ilosc*100./sum(ilosc) over() To pole to wartość pola "ilosc" razy (100.) - specjalnie z kropką na końcu, aby postgresql wiedział, że ma do czynienia z liczbą zmiennoprzecinkową. sum(ilosc) over() oblicza sumę pola ilosc dla WSZYSTKICH rekordów z tabeli. Musiałbyś doczytać co robi tak naprawdę OVER(), bo akurat tu jest proste - bez paraetrów. Może być np. sum(ilosc) over(partition by grupa order by grupa)... Ale dla sum jest to troche bez sensu. lepiej widać na rank(). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 23:25 |