Re: [SQL ] 查詢當日每小時產量統計表

作者: ericsue514 (天之翼)   2020-07-24 14:00:42
資料庫名稱:oracle sql
資料庫版本:
內容/問題描述:
主要問題有二
一 欄位一 時間區間以 當日每小時 做間隔,不知道有沒有時間函數可以處理?
目前想到 以 CASE 作條件輸出 ; WITH 做虛擬表格 查詢 ;
製作 VIEW 觀視表 (和WITH 一樣)
二 達成率希望做個別統計 EX: 07:00 產量/100 ; 08:00 產量/50
主要卡在問題一的時間區隔處理, 沒有其他資料表有相關欄位可以做 JOINT
或 子查詢
請大家幫幫忙
資料表 G_SN_TRAVEL 欄位 OUT_PROCESS_TIME (DATE 機台過站時間戳記)
希望輸出查詢統計表如下
欄位一 欄位二 欄位三
CLOCK_TIME QTY(產量) RATE(達成率)
07:00 XXX XX %
08:00 XXX XX %
09:00 XXX XX %
===========================================================================
自己的文章自己回不符版規就砍吧!
感謝 hwChang 大的提醒 提供問題的完整解答回饋給同樣是新手的大家
WITH
SUM_DATE_QTY(TIME_CLOCK,QTY) AS
(
SELECT
TO_CHAR(A.OUT_PROCESS_TIME,'HH24'),
COUNT(A.OUT_PROCESS_TIME)
FROM SAJET.G_SN_TRAVEL A WHERE A.PROCESS_ID = '100032' AND
to_char(A.OUT_PROCESS_TIME,'YYYYMMDD') = TO_CHAR(SYSDATE,'YYYYMMDD')
GROUP BY TO_CHAR(A.OUT_PROCESS_TIME,'HH24') ORDER BY
TO_CHAR(A.OUT_PROCESS_TIME,'HH24') ASC
)
SELECT
TIME_CLOCK || ':00~59' "TIME_CORD", QTY,
(CASE TIME_CLOCK
WHEN '07' THEN ROUND((QTY/120)*100,2)
WHEN '08' THEN ROUND((QTY/100)*100,2)
WHEN '09' THEN ROUND((QTY/120)*100,2)
WHEN '10' THEN ROUND((QTY/100)*100,2)
WHEN '11' THEN ROUND((QTY/120)*100,2)
WHEN '12' THEN ROUND((QTY/60)*100,2)
WHEN '13' THEN ROUND((QTY/120)*100,2)
WHEN '14' THEN ROUND((QTY/120)*100,2)
WHEN '15' THEN ROUND((QTY/100)*100,2)
WHEN '16' THEN ROUND((QTY/120)*100,2)
WHEN '17' THEN ROUND((QTY/60)*100,2)
WHEN '18' THEN ROUND((QTY/120)*100,2)
WHEN '19' THEN ROUND((QTY/120)*100,2)
WHEN '20' THEN ROUND((QTY/120)*100,2)
END)||'%' "RATE"
FROM SUM_DATE_QTY

Links booklink

Contact Us: admin [ a t ] ucptt.com