iT邦幫忙

0

請問有誰可以幫忙嗎? (AVG (COUNT (...))

https://ithelp.ithome.com.tw/upload/images/20201105/20112508pE3xrTIqJ1.png

https://ithelp.ithome.com.tw/upload/images/20201105/20112508X4Y7vSUxFT.png

https://ithelp.ithome.com.tw/upload/images/20201105/20112508lVfkFvDbZL.png

第一張是問題, 第二張是作一半無法解決, 第3張是出現的訊息.
能煩請那位幫忙解答嗎? 謝謝.

2 個回答

1
rogeryao
iT邦大師 1 級 ‧ 2020-11-05 20:42:46
最佳解答
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;

以上未測

看更多先前的回應...收起先前的回應...
windaura iT邦新手 5 級 ‧ 2020-11-05 20:57:23 檢舉

測試如下:
https://ithelp.ithome.com.tw/upload/images/20201105/20112508qpqsX2Hdyd.png

https://ithelp.ithome.com.tw/upload/images/20201105/20112508C3cbYsDlTr.png

沒成功. 不知程式(Oracle SQL developer)支援/理解 TEMP否?

windaura iT邦新手 5 級 ‧ 2020-11-05 20:58:22 檢舉

還是要謝謝你. Thank you.

rogeryao iT邦大師 1 級 ‧ 2020-11-05 21:01:30 檢舉

) AS TEMP
改成
) TEMP
或改成
) "TEMP" 試試

程式已更新

windaura iT邦新手 5 級 ‧ 2020-11-05 22:49:10 檢舉

一切OK,
尚有一問:一AVG(COUNT(AW_STATUS.aws_action)) OVER () AS "E"
請問OVER是何意? (沒學過, 請問能否用它字取代)

) TEMP (倒數第6), 要replace which one?

抱歉PO的很亂, 先謝謝了.

rogeryao iT邦大師 1 級 ‧ 2020-11-05 23:05:00 檢舉

請參閱 oracle的分析函數over(Partition by...)
在 "常用的分析函數如下所列" 這一段

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-11-05 21:02:42

參考這篇
跟你的情形很類似

如果我沒讀錯,意思是
COUNT 是 COUNT GROUP BY 之後的結果
後面的 AVG(COUNT) 是無效的寫法
把後面的 AVG(COUNT) 改寫掉就會過了

看更多先前的回應...收起先前的回應...
windaura iT邦新手 5 級 ‧ 2020-11-05 21:49:15 檢舉

請教如何改寫? 在我的錯誤 line 167 COUNT(AW_STATUS.aws_action) < AVG(COUNT(AW_STATUS.aws_action))

AW_STATUS.aws_action 是表示動作,此題是要求我計算"動作的次數小於平均動作的次數"

顯然所以我用COUNT跟AVG(COUNT)是錯的. 煩請幫忙解決. 謝謝

顯然所以我用COUNT跟AVG(COUNT)是錯的. 煩請幫忙解決. 謝謝
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
雖然有一個謝謝啦,但是,這種語法是 上對下 命令型 的公文用語.
可能你不是這樣的意思,是有樣學樣的套用.但是這種句型不是很好.

你來問問題, 用貼圖的, 程式碼別人還要從新打, 也沒table 結構,
也沒資料. 問問題要自己把資料準備齊全. 這是很基本的觀念啦.

一級屠豬士
都已經最佳解了您還來寫這麼多字
莫非您不怕被按「沒有幫助」
/images/emoticon/emoticon25.gif

海綿寶寶 哈哈.

不然下面貼個推銷廣告連結,例如這種

人工智慧大數據5G物聯網量子區塊鍊虛擬實境網紅直播電商大平台成長駭客課程.

/images/emoticon/emoticon34.gif

windaura iT邦新手 5 級 ‧ 2020-11-06 14:46:07 檢舉

謝謝大家的說明跟指導, 中文不是很好, 以後問問題會注意語句跟準備資料. 謝謝大家.

我要發表回答

立即登入回答