我有一個基於幾個子查詢計算值的查詢。子查詢基於特定的時間戳。我想爲許多不同時間戳的記錄計算此值。我無法弄清楚如何去做。MySql:基於多個子查詢計算值
的基本公式是(S11S4CreateSessionReqRcvd - S11S4CreateSessionRespAccSent)* 100/S11S4CreateSessionRespAccSent
SELECT
((((select ref_data FROM test.sgw_S5S11 where timestamp = "2013-08-21 00:00:06" and ref_type = "S11S4CreateSessionReqRcvd") - (select ref_data FROM test.sgw_S5S11
where timestamp = "2013-08-21 00:00:06" and ref_type = "S11S4CreateSessionRespAccSent")) * 100)/(select ref_data FROM test.sgw_S5S11
where timestamp = "2013-08-21 00:00:06" and ref_type = "S11S4CreateSessionReqRcvd")) as MyCalc
我不知道如何在一個表中,以便粘貼到這裏是我的數據的CSV格式的樣品
這裏的我的數據樣本。 (我不知道如何把一個表在這裏,所以它在CSV格式)
的myKey,時間戳,ref_type,ref_data 1016101 「2013年8月21日00:00:06」,S5S8CreateSessionReqSent,128042907 1016102,「2013-08-21 00:00:06」,S5S8CreateSessionRespAccRcvd,127088838 1016103,「2013-08-21 00:00:06」,S5S8CreateSessionRespRejRcvd,615553 1016104,「2013-08-21 00:00:06」 ,S5S8CreateBearerReqRcvd,10047 1016105,「2013-08-21 00:00:06」,S5S8CreateBearerRespAccSent,9932 1016106,「2013-08-21 00:00:06」,S5S8CreateBearerRespRejSent,103 1016107,「2013-08-21 00: 00:06「,S11S4CreateSessionReqRcvd,128255390 1016108,」2013-08-21 00:00:06「,S11S4CreateSessionRespAccSent,127114539 1016109,」2013-08-21 00:00:06「,S11S4CreateSessionRespRejSent,713325 1016110,」2013-08 -21 00:00:06「,S11S4CreateBearerReqSent,10028 1016111,」2013-08-21 00:00:06「,S11S4CreateBearerRespAccRcvd,9932 1016112,」2 「013-08-21 00:00:06」,S11S4CreateBearerRespRejRcvd,42
任何幫助將不勝感激!
Thanks @BillKarwin。您的回答讓我獲得了比我更多的信息,但是當我擴展時間戳以允許更多時間戳時,它會一直給出每個ref_type中所有可用的最大值。爲了讓他工作,我必須將MAX(IF(ref_type ='S11S4CreateSessionReqRcvd',ref_data))更改爲MAX(IF(ref_type ='S11S4CreateSessionReqRcvd',ref_data,0)),因爲什麼是由group by statement是最後一次迭代,它不是正確的ref_type。我想我只是將所有這些都放到perl腳本中,並且這樣做,但是我想要感謝你。 – user2712370
我從使用你的方法中學到了很多東西,儘管它沒有讓我找到我想要的東西。再次感謝!!! – user2712370