2024年10月10日 星期四

MYSQL 查詢結果延伸再次查詢出進一步結果 ai版

前言:
這是一個常見的mysql workbench畫面,常用的人應該不陌生。

小編功力不足,常開多個畫面,做查詢結果,再延伸查詢的動作,但這個動作阿,都要靠人,等於人員都要在那邊等待結果;
最近花很多時間測試了很多歸納方式(晚上都沒在睡覺呵呵),終於整理出個方向了,準備做一個大整合,所以念頭動到sql身上,想要直接一鍵完成sql查詢即可。

初步:主要想要查詢特定期間中,特定股票最大股價為多少。
進階:主要想要查詢特定期間中,特定股票最大股價為多少外,我還想要知道最大股價是那一天。



初步的sql指令:

SELECT STOCKID,MIN((LEAST(CAST(OPEN AS DECIMAL(6,2)),CAST(HIGH AS

 DECIMAL(6,2)),CAST(LOW AS DECIMAL(6,2)),CAST(close AS DECIMAL(6,2))))) AS

 max_value FROM yahoo_finance.table_price WHERE  STOCKID IN ('6807', '6854', '1101', '2067',

 '2069', '2070', '2101', '2102', '2103' ) and  DATE BETWEEN '20240731' AND '20241011' GROUP

 BY STOCKID 



進階:

最近想要增加查詢日期,但查詢的日期,希望是該指令查詢後的結果對應的日期,不想查詢兩次,無奈sql修練不夠,那就上網請大神幫忙,誤。以前有論壇可以留言,現在都要靠ai了,來試試勘。

來做:


我想透過我執行的這行指令查詢的結果,延伸查尋出MAX_VALUE資料對應在yahoo_finance.table_price的DATE該行的資料




還可以轉vba:



測試後有點小bug:




WITH max_value_data AS (

    SELECT STOCKID, MIN((LEAST(CAST(OPEN AS DECIMAL(6,2)), 

                                  CAST(HIGH AS DECIMAL(6,2)), 

                                  CAST(LOW AS DECIMAL(6,2)), 

                                  CAST(close AS DECIMAL(6,2))))) AS max_value 

    FROM yahoo_finance.table_price 

    WHERE STOCKID IN ('6807', '6854', '1101', '2067', '2069', '2070', '2101', '2102', '2103') 

    AND DATE BETWEEN '20240731' AND '20241010' 

    GROUP BY STOCKID

)

SELECT DISTINCT  a.STOCKID, a.DATE, b.max_value

FROM yahoo_finance.table_price a

JOIN max_value_data b ON a.STOCKID = b.STOCKID

WHERE (LEAST(CAST(a.OPEN AS DECIMAL(6,2)), 

             CAST(a.HIGH AS DECIMAL(6,2)), 

             CAST(a.LOW AS DECIMAL(6,2)), 

             CAST(a.close AS DECIMAL(6,2))) = b.max_value)

AND a.DATE BETWEEN '20240731' AND '20241010'

ORDER BY a.STOCKID, a.DATE;


本來可能要自己修練一整個下午的指令,互動約30分鐘含測試,說真的ai進步到初階工程師,應該都會沒有飯吃了。
但ai真的好用,尤其這半年,根本進步神速,以前還會鬼打牆。





沒有留言:

張貼留言

我的雷達:2024/12/24

  太棒了,最近15天投報率太讓我暗爽了 追加2號神秘指標,還在驗證中,但滿足我的雷達條件下,2號指標反而有參考性。