# Hibernate Division zweier Summen



## thomas86 (5. Feb 2012)

Guten Abend 

Für ein Aktien-Depot versuche ich folgende MySQL-Abfrage in Hibernate umzusetzten:

```
SELECT (SUM( quantity * price )) / ( SUM( quantity ) )
FROM transactions
WHERE idStock =10
AND quantity > 0
```
+

Ich bekomme aber immer die Fehlermeldung: org.hibernate.QueryException: , expected in SELECT

Jemand eine Idee ob das überhaupt mit Hibernate machbar ist?

Grüße
Thomas


----------



## SlaterB (6. Feb 2012)

fange einfach an

```
SELECT quantity
FROM transactions
```
funktioniert das?
wenn ja, dann das sum einfügen, dann das nächste (eher unnötige) Klammernpaar usw., 
ab welcher möglichst kleinen Änderung tritt der Fehler auf?


----------



## thomas86 (6. Feb 2012)

Guten Morgen SlaterB,

momentan bin ich leider auf Arbeit und habe kein Zugriff auf den MySQL-Server. Trotzdem kann ich eben schildern was ich bisher probiert habe und was bis jetzt funktioniert:


```
SELECT sum(quantity*price), sum(t.quantity) FROM transactions t
```
lustiger weise wirft er einen fehler wenn ich sum(quantity) anstatt sum(*t.*quantity) verwende.


was jedoch mit o.g. Fehlermedung nicht funktioniert ist:

```
SELECT sum(quantity*price)/sum(t.quantity) FROM transactions t
```

Grüße
Thomas


----------



## SlaterB (6. Feb 2012)

von Fehler bei quantity vs. t.quantity zu sprechen und dann doch beide Varianten gleichzeitig zu benutzen ist etwas merkwürdig,
auch wenn ich darin keine gezielte Ursache für deinen Fehler sehe

ich habe leider nicht mehr zu bieten als noch lose Vorschläge:
teste
[sql]
SELECT t.price/t.price FROM transactions t
[/sql]
[sql]
SELECT sum(t.price*t.price)/sum(t.price) FROM transactions t
[/sql]
geht das?

welchen Datentyp haben die Attribute in der DB, in Hibernate?
was kommt bei der von dir genannten funktionierenden
[sql]SELECT sum(quantity*price), sum(t.quantity) FROM transactions t[/sql]
Variante raus, welchen Typ erhalten die Ergebnisse?

kannst du bei dieser ziel-nahen Query multiplizieren oder addieren, wenn schon / nicht geht?
na, wahrscheinlich alles nicht so spannend

wie sieht der gesamte StackTrace aus, wird SQL von Hibernate erzeugt und an die DB geschickt (gibt es Log dahzu?)
oder schon vorher Abbruch, soweit das zu interpretieren ist,
welchen Java-Code verwendest du, sicher dass du auch das aktuellste testest, und nicht z.B. eine zweite Query nach der ersten noch einen Fehler wirft?


----------



## thomas86 (6. Feb 2012)

Probiere ich abends aus wenn ich zuhause bin. Vielen Dank schonmal und bis später.


----------

