2011-09-23 175 views
4

我有兩個表格;一個記錄由操作員記錄,另一個記錄由操作員運行的機器存儲的數據以記錄機器的時間。來自運營商的數據是機器每小時運行的最低記錄(有時更多)。停機時存儲的數據是在機器停機或運行時數據記錄的恆定流。用SQL比較兩個表格

我想要做的是從運營商獲取數據,並將其與停機時間的系統比較,以確保運營商正在採取每隔一小時權重,一小時一次,使機器操作。如果機器停機一個小時,則不會有操作員記錄。如果機器在小時間隔內的任何時間段內都處於活動狀態,則應該有該小時間隔的記錄。爲此,我需要將每個表格的數據簡化爲每小時一條記錄,並比較兩者每小時都有一條記錄。

我的SQL知識不是那寬廣,所以我甚至不知道這是可能的。我已經嘗試每小時計算物品並對數據進行分組,但尚未能成功使其工作。

這些表位於Microsoft SQLExpress 2008數據庫中。表格本身很長。

算表: 日期時間Product_No SEQ日期代碼Internal_DateCode & ProductNo PRODUCT_DESCRIPTION口徑加權1加權Weight3重80磅WeightXR LSL_WT TAR_WT USL_WT LABEL MAV

11年8月3日○點37分54秒23 1234567日期代碼Internal_DateCode & ProductNo產品說明L-1A 50 1575 1566 1569.5 1575.5 1573.4 1550.809 1574.623 1598.437 1564.623 1525.507 L-1A_50

DOWNTIME表:

LINE_NAME MACHINE_NAME t_stamp移詳細秒持續時間中 R2切換11年9月3日22時17分53 R2填料11年9月3日23:10 17

感興趣的機器是「填料」,持續時間以分鐘爲單位的時間量機器停機。

的目標是:找出哪些時間他們沒有哪個時間的運營商採取了權重和。找出機器停機的時間以及它們在哪個小時處於活動狀態。比較操作員未加權的時間和機器處於活動狀態的時間,並確定機器是否在運行,但是應該存在沒有操作員權重的記錄。

+0

您是否對'每小時每小時(分析嚴格按小時分組,不管實際分鐘)「還是'每小時一次或多或少一次'感興趣(其中分析着眼於分離在條目之間,加或減一些錯誤)。此外,你的RDBMS是什麼,因爲答案可能取決於實現。 –

回答

1

假設: 1)如果日期和時間是實際日期和時間格式,這將是不同的。但不知道,我會猜測他們是字符串(否則,爲什麼讓他們兩列?)所以我會猜測他們分別是YYYY-MM-DD和HH:MI。

2)這似乎是合理的OP想知道這些事實或者通過SHIFT或按產品或什麼的。看到他們什麼時候完成任何事情的時候,這似乎很奇怪。我會猜測它是由ProductNo產生的。

3)這可以在代碼來完成,但是我的例子是比較容易,如果我在它創建一個小時的表:

create table hours (hr varchar(2)); 
insert into hours ('01'); 
insert into hours ('02'); 
insert into hours ('03'); 
insert into hours ('04'); 
etc. 

4)的任務在某種程度上時基 - 也就是報告是在某個特定的時間段。在我的例子中,我將選擇9月份。

任務1:找出操作員在哪些小時中加權並且哪些小時不加。

select h.hr, o.productno, count(*) as nbr 
from hours h 
    left outer join operator o 
    on h.hr = substr (o.time, 1, 2) 
where o.date between '2011-09-01' and '2011-09-30' 
group by h.hr, o.productno 

這應該顯示小時數列表,如果進行了測量,那些測量值在該小時內對該productno進行的次數。如果沒有進行測量,由於外部連接,productno將是空白的,我猜測這是OP忘記的內容。

任務2:找出機器停機的時間以及它們在哪個小時處於活動狀態。

我不想繼續,除非OP給出我的假設的一些線索。事實上,我完全有可能浪費我的時間。

任務3 & 4:比較倍,運營商沒有采取符合時代的權重,機器仍在工作,確定機都運行但目前還沒有運營商記錄的權重時,應該有。

我不想繼續,除非OP給出我的假設的一些線索。事實上,我完全有可能浪費我的時間。

+0

謝謝你的幫助。我添加了一些示例數據來查看。最終我們並不關心諸如假設1的產品否,但是轉變可能更有用。由於重量是在填充物處取得的,所關注的機器是「填充物」機器。但是,「轉換」也會影響Filler,因此這些是需要查看的Downtime表中的兩臺機器。再次感謝您的幫助。 –