假設我有如下表:SQL查詢方案。
我的目標是顯示一個選擇的結果集,看起來像這樣:
這裏最棘手的部分是顯示AverageCostPerType列爲每一本書。
我知道如何獲得AverageCostPerType,它只是以下內容: SELECT avg(bookcost)as AverageCostPerType FROM BOOK GROUPBY BookType;
這將顯示3行,因爲我有3個不同的類型。我如何顯示每本書的averagecostpertype?
我會感謝您的幫助。
假設我有如下表:SQL查詢方案。
我的目標是顯示一個選擇的結果集,看起來像這樣:
這裏最棘手的部分是顯示AverageCostPerType列爲每一本書。
我知道如何獲得AverageCostPerType,它只是以下內容: SELECT avg(bookcost)as AverageCostPerType FROM BOOK GROUPBY BookType;
這將顯示3行,因爲我有3個不同的類型。我如何顯示每本書的averagecostpertype?
我會感謝您的幫助。
您可以在派生表計算出每BOOKTYPE平均值和join
它原始表得到結果。
select book_num, t.booktype, x.avgcost, bookcost, x.avgcost-bookcost
from tablename t join
(select booktype, avg(bookcost) as avgcost from tablename group by booktype) x
on t.booktype = x.booktype
select b.*,
b2.AverageCostPerType,
b2.AverageCostPerType - b.BookCost as difference
from book b
join
(
SELECT BookType, avg(bookcost) as AverageCostPerType
FROM BOOK
GROUP BY BookType
) b2 on b.BookType = b2.BookType
您應該更改爲'b.BookCost - b2.AverageCostPerType' – lad2025
你需要使用analytic functions
AVG每次的BookType
select b.*, avg(bookcost) over (PARTITION BY BookType)
from book b
AVG的所有書籍
select b.*, avg(bookcost) over()
from book b
可以使用aggregate功能與分析分區窗口獲得平均成本按書類型。
這允許您執行查詢而無需將表加入自己或使用嵌套的select語句。
select Book_num,
BookType,
avg(BookCost) over(partition by BookType) as AverageCostPerType,
BookCost,
BookCost - avg(BookCost) over(partition by BookType) as Difference
from YourBookTable
你有沒有試圖找到一個解決方案了嗎?如果是這樣,告訴我們你已經嘗試過。現在你要求我們爲你設計一個解決方案,如果你幸運的話,有人可能會這樣做,但這不是真的。 –