SELECT
TEMP.A AS "Artist Code",
TEMP.B AS "Artwork No.",
TEMP.C AS "Artwork Title",
TEMP.D AS "Number of Movements"
FROM(
SELECT
ARTIST.artist_code AS "A",
ARTWORK.artwork_no AS "B",
ARTWORK.artwork_title AS "C",
COUNT(AW_STATUS.aws_action) AS "D",
AVG(COUNT(AW_STATUS.aws_action)) OVER () AS "E"
FROM ARTIST
JOIN ARTWORK
ON ARTIST.artist_code = ARTWORK.artist_code
JOIN AW_STATUS
ON AW_STATUS.artist_code = ARTWORK.artist_code
AND AW_STATUS.artwork_no = ARTWORK.artwork_no
GROUP BY
ARTIST.artist_code,
ARTWORK.artwork_no,
ARTWORK.artwork_title
) TEMP
WHERE TEMP.D < TEMP.E
ORDER BY
TEMP.D ASC,
TEMP.A ASC,
TEMP.B ASC;
以上未測
) AS TEMP
改成
) TEMP
或改成
) "TEMP" 試試
程式已更新
一切OK,
尚有一問:一AVG(COUNT(AW_STATUS.aws_action)) OVER () AS "E"
請問OVER是何意? (沒學過, 請問能否用它字取代)
) TEMP (倒數第6), 要replace which one?
抱歉PO的很亂, 先謝謝了.
請參閱 oracle的分析函數over(Partition by...)
在 "常用的分析函數如下所列" 這一段
參考這篇
跟你的情形很類似
如果我沒讀錯,意思是
COUNT 是 COUNT GROUP BY 之後的結果
後面的 AVG(COUNT) 是無效的寫法
把後面的 AVG(COUNT) 改寫掉就會過了
請教如何改寫? 在我的錯誤 line 167 COUNT(AW_STATUS.aws_action) < AVG(COUNT(AW_STATUS.aws_action))
AW_STATUS.aws_action 是表示動作,此題是要求我計算"動作的次數小於平均動作的次數"
顯然所以我用COUNT跟AVG(COUNT)是錯的. 煩請幫忙解決. 謝謝
顯然所以我用COUNT跟AVG(COUNT)是錯的. 煩請幫忙解決. 謝謝
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
雖然有一個謝謝啦,但是,這種語法是 上對下 命令型 的公文用語.
可能你不是這樣的意思,是有樣學樣的套用.但是這種句型不是很好.
你來問問題, 用貼圖的, 程式碼別人還要從新打, 也沒table 結構,
也沒資料. 問問題要自己把資料準備齊全. 這是很基本的觀念啦.
一級屠豬士
都已經最佳解了您還來寫這麼多字
莫非您不怕被按「沒有幫助」