Erstellung einer Abfrage mit Summenbildung

Ausgangslage:

System:

Debian 3.1 Sarge, MySQL 4.1 OpenOffice.org 2.0.1 ODBC 3.51

Aufgabenstellung:

Erstellen einer Abfrage. Gruppieren nach einem Kriterium und Summenbildung von Währungsbeträgen.

In beiden Datenbanken (HSQL und MySQL, angebunden über ODBC) wird jeweils eine Tabelle mit 3 Spalten angelegt. Sie enthült die gleichen Werte.

+----+-------+--------+
| ID | Konto | Betrag |
+----+-------+--------+
|  1 | 4910  |  20.42 |
|  2 | 8500  | 134.76 |
|  3 | 4910  |  47.76 |
|  4 | 8500  |  54.65 |
+----+-------+--------+

Nun wird die Abfrage erstellt.

Diese sieht in den beiden Datenbanken schon ein wenig unterschiedlich aus.

  1. HSQL: SELECT "Konto", SUM( "Betrag" ) FROM "Tabelle1" "Tabelle1" GROUP BY "Konto"
  2. MySQL: SELECT `Konto`, SUM( `Betrag` ) FROM `Tabelle1` `Tabelle1` GROUP BY `Konto`

Überlegungen zum Summenproblem:

Werden die einzelnen Werte abgefragt, sind die Dezimalen richtig. Auch die Summen werden richtig gebildet, aber bei der Abfrage einer MySQL-Datenbank ohne Dezimalen dargestellt.

Screenshot als Beleg

Vergleichbare Probleme gibt es bei der Benutzung der Durchschnitts-Funktion.

Daraufhin wurde die zweite Abfrage direkt an der MySQL-Konsole eingegeben.

mysql> select `Konto`,sum(`Betrag`) from `Tabelle1` `Tabelle1` group by `Konto`;
+-------+---------------+
| Konto | sum(`Betrag`) |
+-------+---------------+
|  4910 |         68.18 |
|  8500 |        189.41 |
+-------+---------------+
2 rows in set (0.00 sec)

Das dort dargestellt Ergebnis entsprach der Erwartung.

Ein Workaround:

Da offenbar nur ganze Zahlen dargestellt werden, beruht der Workaround darauf, zunächst Euro durch Cent als Grundeinheit bei der Abfrage zu ersetzen und in Calc diese wieder in Euro umzurechnen.

Diese Abfrage in OOo direkt eingeben:

select `Konto`,sum(`Betrag`*100) from `Tabelle1` `Tabelle1` group by `Konto`;

Bei der Auswertung dieser Abfrage in einer Calc-Tabelle können diese Werte dann wieder durch 100 geteilt und die entsprechende Spalte kann sachgerecht formatiert werden.

Was noch zu tun ist:

Zu testen ist, ob die Probleme bei anderen Datenbank-Managementsystemen (Postgresql) und /oder einer anderen Anbindung (JDBC) ebenfalls auftreten.

Erfahrungsberichte willkommen!