Różne wyniki dzielenia dla "base" i "calc" /libre office/

0

Mam problem. tak 'for fun' siadłem sobie do piątego zadania z infy z matury 2016. Zwykłe policzenie średniej mieszkańców na pokój z jednej tabelki...
Aż doszedłem do miejsca, gdzie średnia albo też zwykłe dzielenie z zaokrągleniem do 4 miejsc w calcu daje mi 325/69 = 4,7101
A w "basie" w hSQL-u - już pomijając, ze srednia AVG dala mi 4 ale gdy dałem cast(count(*),double) zacząło wychodzić 4,71.
Teraz dalem wprost SELECT DISTINCT CAST(325 as double)/69 from DOWOLNA_TABELA i ciągle mam 4,71 dlaczego?
Miałem to potem roundem potraktowac - ale nie mam czego bo i tak uzyskuje tylko wynik do drugiego miejsca po przecinku.

0

Dlatego że SQL jako wynik daje takiego typu jak najdokładniejszy czynnik.
Np 5/2 to 2 ale 5./2 to 2.5
Ta kropka oznacza numeru/Double/real etc.

0
Marcin.Miga napisał(a):

Dlatego że SQL jako wynik daje takiego typu jak najdokładniejszy czynnik.
Np 5/2 to 2 ale 5./2 to 2.5
Ta kropka oznacza numeru/Double/real etc.

Nie doczytałeś dokładnie, zauważ, że przed działaniem zamieniam typ na double.
Zamieniałem to wczesniej tak: 1.0 * A/B potem tak 1.0000*A/B (inne wyniki!) a teraz tak
CAST (A as double)/B Uzyskiwałem 4,7 potem 4,71 i znowu 4,71
A to po przecinku powinno mieć wiele cyfr...

0

Coś z BASEem libreoffice jest (?)

 SELECT DISTINCT CAST(325 as double)/69 from DOWOLNA_TABELA

w base daje 4.71
a np na stronie https://www.w3schools.com/sql/trysql.asp?filename=trysql_op_in
podmieniajac nazwe tabeli na customers juz poprawnie
4.7101449275362315

0

Problem rozwiązany - otóż w base widok wyników kwerendy jest formatowany nieco jak arkusz kalkulacyjny - komórki mają swój standardowy format, który można zmienić prawym klikiem myszy na nazwę pola! Tam było dodatkowo ograniczone do dwóch miejsc po przecinku.

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