2013-08-17 33 views
1

我想計算一個百分比,但編譯器不斷告訴我,它不會期望斜槓和第三個選擇語句。如何做一個部門,在HQL中計算一個百分比?

Query query = session.createQuery("SELECT 
(SELECT COUNT(*) FROM Reservation r WHERE r.begin BETWEEN :start AND :end) 
/
(SELECT COUNT(*) FROM Reservation res WHERE res.begin BETWEEN :start AND :end AND res.contract IS NOT NULL) * 100"); 

當我嘗試運行它,它給了我這個錯誤:

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree 

我在做什麼錯? 在此先感謝!

+0

我GOOGLE的java休眠式除法請參閱http:/ /docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch11.html –

+0

我也是這樣,也許我錯過了它,但似乎無法找到問題所在。如果你這樣做,請注意解釋。 – joekeee

+0

嘗試創建一個視圖,從兩個選擇,然後使用視圖,看到這個http://stackoverflow.com/questions/15215757/creating-views-through-hibernate,不幸的是這是我所能做的 –

回答

1

兩個計數可以被組合成一個查詢:

SELECT (count(r.contract)/count(r)) * 100 
FROM Reservation r 
WHERE r.begin between :start and :end 

在一些數據庫中,導致整數除法和以下是然後更好:

SELECT (count(r.contract)*1.0/count(r)) * 100 
FROM Reservation r 
WHERE r.begin between :start and :end