作者ericsue514 (天之翼)
看板Database
标题Re: [SQL ] 查询当日每小时产量统计表
时间Fri Jul 24 14:00:42 2020
资料库名称: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
--
从表象看起来我是个没啥事的闲人╭(─╴─)╮
其实我的真实身份是............研究僧
研究如何将自己脱离去死团方法.........................Orz
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.216.86.175 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1595570448.A.B82.html