Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> AVG na kolumnie z typem danych - money
Martinez31
post 21.01.2018, 23:49:18
Post #1





Grupa: Zarejestrowani
Postów: 12
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.
Go to the top of the page
+Quote Post
mmmmmmm
post 22.01.2018, 08:38:22
Post #2





Grupa: Zarejestrowani
Postów: 1 386
Pomógł: 302
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
  1. SELECT AVG(pensja::numeric) AS srednie_wynagdodzenie FROM pracownicy
Go to the top of the page
+Quote Post
Martinez31
post 25.01.2018, 23:54:04
Post #3





Grupa: Zarejestrowani
Postów: 12
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
Go to the top of the page
+Quote Post
mmmmmmm
post 26.01.2018, 08:22:27
Post #4





Grupa: Zarejestrowani
Postów: 1 386
Pomógł: 302
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT AVG(pensja::numeric)::money AS srednie_wynagdodzenie FROM pracownicy
Go to the top of the page
+Quote Post
Martinez31
post 26.01.2018, 19:49:27
Post #5





Grupa: Zarejestrowani
Postów: 12
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 "
Go to the top of the page
+Quote Post
mmmmmmm
post 27.01.2018, 11:37:56
Post #6





Grupa: Zarejestrowani
Postów: 1 386
Pomógł: 302
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


Powyżej już napisałem. Castuj (za pomocą ::(typ) ) z powrotem na money
Go to the top of the page
+Quote Post
Martinez31
post 27.01.2018, 18:34:25
Post #7





Grupa: Zarejestrowani
Postów: 12
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.
Go to the top of the page
+Quote Post
mmmmmmm
post 28.01.2018, 20:49:41
Post #8





Grupa: Zarejestrowani
Postów: 1 386
Pomógł: 302
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  1. SELECT avg(pensja::numeric)::numeric(10,2), round(avg(pensja::numeric),2) FROM pracownicy
Go to the top of the page
+Quote Post
Martinez31
post 31.01.2018, 21:57:49
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 21.01.2018

Ostrzeżenie: (0%)
-----


Wielkie dzięki.

Ten post edytował Martinez31 31.01.2018, 21:58:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2018 - 15:26