AVG na kolumnie z typem danych - money |
AVG na kolumnie z typem danych - money |
21.01.2018, 23:49:18
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 21.01.2018 Ostrzeżenie: (0%) |
Dobry wieczór.
Proszę o pomoc w poniższym zagadnieniu, W bazie danych na której uczę się języka zapytań mam kolumnę pensja, typ danych w tej kolumnie to money. Próbuje wyciągnąć średnią z pensji za pomocą funkcji agregującej AVG, niestety pojawia się błąd. Przykład zapytania: Select AVG(pensja) as Średnie_wynagdodzenie From pracownicy Błąd: BŁĄD: funkcja avg(money) nie istnieje LINE 1: select AVG (pensja) as Średnia_wynagrodzeń ^ HINT: Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może należy dodać jawne rzutowanie typów. ********** Błąd ********** BŁĄD: funkcja avg(money) nie istnieje Stan SQL: 42883 Wskazówka: Brak funkcji pasującej do podanej nazwy i typów argumentów. Być może należy dodać jawne rzutowanie typów. Znak: 8 Pozdrawiam. |
|
|
22.01.2018, 08:38:22
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
"A money value can be cast to numeric without loss of precision. " - https://www.postgresql.org/docs/9.5/static/...type-money.html
|
|
|
25.01.2018, 23:54:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 21.01.2018 Ostrzeżenie: (0%) |
Witam,
Serdeczne dzięki za pomoc. Kontynuując temat.... po zastosowaniu zapytania: " SELECT AVG(pensja::numeric) AS srednie_wynagdodzenie FROM pracownicy " otrzymałem wynik: Średnie_wynagrodzenie numeric 2490.4761904761904762 Wynik jak najbardziej prawidłowy, ale chał bym otrzymaną liczbę zaokrąglić do 2 miejsc po przecinku a następnie przekonwertować ja z powrotem na typ danych money Wiem że do zaokrąglenia używa się funkcji ROUND a do konwertowania liczb funkcji CAST lub CONVERT, niestety nie wychodzi. PROŚBA O POMOC. Ten post edytował Martinez31 25.01.2018, 23:54:57 |
|
|
26.01.2018, 08:22:27
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
|
|
|
26.01.2018, 19:49:27
Post
#5
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 21.01.2018 Ostrzeżenie: (0%) |
Dzięki serdeczne za pomoc.
Jak w takim razie zaokrąglić do dwóch miejsc po przecinku następujący wynik zapytania: Średnie_wynagrodzenie numeric 2490.4761904761904762 Pierwotne zapytanie wygląda następująco: " SELECT AVG(pensja::numeric) "Średnie wynagdodzenie" FROM pracownicy " |
|
|
27.01.2018, 11:37:56
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
Powyżej już napisałem. Castuj (za pomocą ::(typ) ) z powrotem na money
|
|
|
27.01.2018, 18:34:25
Post
#7
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 21.01.2018 Ostrzeżenie: (0%) |
Nie chcę zmieniać typu danych na money, chce by został typ numeric zaokrąglony do np. dwóch miejsc po przecinku.
|
|
|
28.01.2018, 20:49:41
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
|
|
|
31.01.2018, 21:57:49
Post
#9
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 21.01.2018 Ostrzeżenie: (0%) |
Wielkie dzięki.
Ten post edytował Martinez31 31.01.2018, 21:58:14 |
|
|
Wersja Lo-Fi | Aktualny czas: 27.09.2024 - 04:44 |