2012-08-03 19 views
0

我有問題。通過選擇中的計算錯誤組

這是查詢:

SELECT a.naam as "Artiest", SUM(o.numberOfOrders) as "Aantal singles", 
(SUM(o.numberOfOrders) * s.price) * 0.35 as "Winst 

FROM orders o 
JOIN singles s ON s.singleid = b.singleid 
JOIN artist a ON a.artistid = s.artistid 
WHERE b.date= TO_DATE('15/MAY/2012','dd/mon/yyyy') 
GROUP BY a.name 

當我執行此查詢我得到的錯誤:

"not a GROUP BY expression"

我已經試圖把(SUM(o.numberOfOrders)* S。價格)* 0.35在這個組裏也是這樣,
但是我得到這個錯誤:

"group function is not allowed here"

我該如何解決這個問題?

+1

你使用的是什麼RDBMS? Sql Server,MySQL? – Taryn 2012-08-03 13:31:20

+0

此外,請確保您的組逐列與選擇內容相同。我注意到你正在選擇'a.naam'並且通過'a.name'進行分組。選擇中不在聚合中的任何列應位於您的group by子句中。 – SPFiredrake 2012-08-03 13:38:31

+0

你已經定義了'a'和's',但是我找不到'b' – Mistu4u 2012-08-03 13:40:03

回答

3

你想用下面的一個替換此:

sum(o.numberOfOrders*s.price)*0.35 

或:

sum(o.numberOfOrdrs)*avg(s.price)*0.35 

或(也許):

sum(o.numberOfOrdrs)*max(s.price)*0.35 

換句話說,s.price不在羣組中

+1

這個答案比我的更正確。 +1。儘管他在查詢中也缺少一些雙引號。 – Fluffeh 2012-08-03 13:40:19

+0

謝謝,這個修好了。 – 2012-08-03 13:54:01

1

你錯過了一個雙引號。試試這個:

SELECT 
    a.naam as "Artiest", 
    SUM(o.numberOfOrders) as "Aantal singles", 
    (SUM(o.numberOfOrders) * s.price) * 0.35 as "Winst" 
FROM 
    orders o 
     JOIN singles s ON s.singleid = b.singleid 
     JOIN artist a ON a.artistid = s.artistid 
WHERE 
    b.date= TO_DATE('15/MAY/2012','dd/mon/yyyy') 
GROUP BY a.name