Zaokrąglanie

Po ostatnich poprawkach w kodzie procedur wyliczających ile kasy należy komu wypłacić odbiorca zwrócił uwagę, że w jego przypadku wychodzą inne wyniki przy zaokrąglaniu do uzgodnionej liczby miejsc po przecinku. Testowanie wyników odbywało się poprzez Accessa i procedury w VBA, co powodowało rozjazd z danymi SQL Servera. Cóż, zaokrąglenia mogą być różne, nie tylko znane wszem i wobec arytmetyczne. Źle tylko, że tak samo nazywająca się funkcja ma różne implementacje w różnych językach – trzeba sprawdzać która z nich akurat jest przyjęta. Czytaj dalej

Mnożenie rekordów w SQL

Podczas prac nad jednym z modułów systemu który rozwijam pojawił się pomysł mnożenia wartości zgrupowanych danych. Niestety standardowy mechanizm SQL pozwala jedynie na kilka operacji na rekordach: sum(), avg(), count() etc. Jak to zrobić? Okazuje się, że banalnie prosto:

W = exp(sum(log(kolumna)))

Czyli z grubsza wystarczy zamienić mnożenie na sumowanie logarytmów.

Taa. Jasne. Czytaj dalej