funkcja AVG podaje tylko zaokrągloną średnią

Użytkowanie programu bazodanowego

funkcja AVG podaje tylko zaokrągloną średnią

Postprzez gryszard » Wt kwi 17, 2018 11:13 pm

Dzień dobry wszystkim forumowiczom.

Mam na imię Rysiek i jestem początkującym maturalnym bazodanistą. Borykam się z ogromnym problemem, który eliminuje mnie z gry o punkty na maturze i nie mogę znaleźć odpowiedzi w internecie:

funckja obliczająca średnią AVG podaje mi tylko zaokrąglony do cyfry jedności wynik, nie jestem w stanie odczytać dokładnej liczby, a tym bardziej przybliżyć do dowolnej ilości miejsc po przecinku.

Czy ktoś miał podobny problem? Jak coś takiego rozwiązać?

Reinstalacja nie pomaga, system operacyjny też nie wpływa na problem, grzebałem też trochę w opcjach, ale nie widzę, poza tym nie chcę tracić dużo czasu... Pojawia się ten problem zarówno na Windowsie i na Linuksie. Microsoft Office nie sprawia tego problemu, ale nie o tym w sumie mowa.

Pozdrawiam wszystkich i czekam niecierpliwie na odpowiedź :)
Libre Office 5.4.5.1
Ubuntu 17.10
gryszard
 
Posty: 2
Dołączył(a): Wt kwi 17, 2018 11:04 pm

Re: funkcja AVG podaje tylko zaokrągloną średnią

Postprzez Jan_J » Śr kwi 18, 2018 12:30 am

Szybki eksperyment porównawczy zachowania PostgreSQLa i HSQLDB1.8 wbudowanego w Base pokazał że
avg z wyrażeń całkowitoliczbowych w Postgresie jest typu numeric;
avg w hsql jest typu tego co uśredniane wyrażenie.

Tyle doraźny test. Wyczerpująca odpowiedź wymaga zajrzenia do dokumentacji standardów SQL oraz systemów: http://hsqldb.org/doc/1.8/guide, http://hsqldb.org/doc/2.0/guide.

HSQL:
The returned value type for COUNT is INTEGER, for MIN, MAX and AVG it is the same type as the column [...]
(http://hsqldb.org/doc/1.8/guide/ch09.html#N1251E)
Tak więc kolumna avg(pole typu integer) przekazuje daną typu integer, a avg z kolumny decimal(4,2) jest typu decimal(4,2). Jawna konwersja typu pomaga, np. avg(cast("a" as double)) daje wynik double.

Dla porównania, http://www.postgresql.org/docs, którego implementacja sql jest dość bliska standardu, mówi że
Function: avg(expression)
Argument type(s): smallint, int, bigint, real, double precision, numeric, or interval
Return type: numeric for any integer-type argument, double precision for a floating-point argument, otherwise the same as the argument data type
Description: the average (arithmetic mean) of all input values
(https://www.postgresql.org/docs/9.3/sta ... egate.html)

Btw., jak widać wyjaśnienie da się znaleźć w internecie co nie znaczy, że znajdziemy je poprzez wyszukiwarkę ...

poza tym nie chcę tracić dużo czasu
Co proszę? to znaczy kto powinien go stracić w Twoim imieniu?
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3923
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: funkcja AVG podaje tylko zaokrągloną średnią

Postprzez gryszard » Śr kwi 18, 2018 1:03 am

Dziękuję za pomoc. Tu padło wiele celnych spostrzeżeń, które z pewnością przydadzą mi się w rozwiązywaniu podobnych niejasności w przyszłości.

Wyczerpująca odpowiedź wymaga zajrzenia do dokumentacji standardów SQL

Btw., jak widać wyjaśnienie da się znaleźć w internecie co nie znaczy, że znajdziemy je poprzez wyszukiwarkę ...


Istotnie, jawna konwersja typów pomogła, jest to strzał w dziesiątkę.

Co proszę? to znaczy kto powinien go stracić w Twoim imieniu?


Zabrzmiało to niemiło w moim imieniu, przepraszam za sprawienie kłopotu. Chodziło mi o to, że męczyłbym się poszukując magicznych ustawień w programie Libre Office lub bezskutecznie wpisując frazy "AVG nie działa" w wyszukiwarkę. Liczyłem na dłoń osoby bardziej doświadczonej, która potrafi lepiej podejść do problemu.

Jeszcze raz dziękuję. Trafna i merytoryczna odpowiedź, temat został wyjaśniony :)

Życzę miłego dnia!
Libre Office 5.4.5.1
Ubuntu 17.10
gryszard
 
Posty: 2
Dołączył(a): Wt kwi 17, 2018 11:04 pm

Re: funkcja AVG podaje tylko zaokrągloną średnią

Postprzez Jan_J » Śr kwi 18, 2018 10:15 am

Kod: Zaznacz cały   Rozszerz widokZwiń widok
kto powinien go stracić w Twoim imieniu?
chór zgryźliwych starców.

Jesteśmy tu, bo chcemy pomóc, jeśli potrafimy. Temat był dobrze postawiony, więc nie ma problemu. Tyko śmiesznie zabrzmiało.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 12 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3923
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Base

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość