0

アプリケーションの特定のジョブ実行時間を提供する2つの一時テーブルがあります。月ごとの平均的な仕事のタイミングを報告したいと思います。そして、違いに注意してください。

一時テーブルを作成する最初のクエリは、最初の月の平均ジョブタイミングを出力し、2番目の一時テーブルには2か月目の平均ジョブタイミングが含まれます。

2か月目と1か月目の違いを測定して、各ジョブのパーセンテージの違いを比較したいと思います。

次に、2つの一時テーブルを作成するクエリの例を示します。

--2月のジョブタイミングの一時テーブル

CREATE TABLE #JobTimings_FEB(jobtime int, PRCSINSTANCE int ,
PRCSNAME char (30), PRCSTYPE char (30), RUNSTATUS char (30), 
OPRID char (30), RUNCNTLID char (30), BEGINDTTM char (30) , 
ENDDTTM char (30))--, #Executions char (10))
;
INSERT INTO #JobTimings_NEWSERV (jobtime, PRCSINSTANCE, 
PRCSNAME , PRCSTYPE, RUNSTATUS, OPRID, RUNCNTLID, BEGINDTTM, ENDDTTM)

SELECT DATEDIFF(ss,BEGINDTTM,ENDDTTM) AS jobtime, 
PRCSINSTANCE, PRCSNAME, PRCSTYPE, RUNSTATUS, OPRID, 
RUNCNTLID, BEGINDTTM, ENDDTTM
FROM PSPRCSRQST WHERE BEGINDTTM BETWEEN '2012-02-01 00:00:00.000' 
AND '2012-02-28 23:59:09.837' 
ORDER BY BEGINDTTM

--1月のジョブタイミングの一時テーブル

CREATE TABLE #JobTimings_JAN(jobtime int, PRCSINSTANCE int , 
PRCSNAME char (30), PRCSTYPE char (30), RUNSTATUS char (30), 
OPRID char (30), RUNCNTLID char (30), BEGINDTTM char (30) , 
ENDDTTM char (30))--, #Executions char (10))
;
INSERT INTO #JobTimings_OLDSERV (jobtime, PRCSINSTANCE, 
PRCSNAME , PRCSTYPE, RUNSTATUS, OPRID, RUNCNTLID, BEGINDTTM, ENDDTTM)

SELECT DATEDIFF(ss,BEGINDTTM,ENDDTTM) AS jobtime, 
PRCSINSTANCE, PRCSNAME, PRCSTYPE, RUNSTATUS, OPRID, 
RUNCNTLID, BEGINDTTM, ENDDTTM
FROM PSPRCSRQST WHERE BEGINDTTM BETWEEN '2011-12-04 00:00:00.000' 
AND '2011-12-17 23:59:09.837' 
ORDER BY BEGINDTTM

上記のように、2か月間の各ジョブのクエリのパーセンテージの違いを見つけたいと思います。

4

1 に答える 1

1

共通の値に基づいて、2 つのテーブルを結合する必要があります。PRCSINSTANCE がジョブを識別している場合、クエリは次のようになります。

SELECT m1.PRCSINSTANCE ,m1.PRCSNAME , --other static columns here
100 * (m2.jobtime - m1.jobtime) / m1.jobtime AS JobtimePercentChange
-- other calculations here 
FROM #JobTimings_JAN AS m1
JOIN #JobTimings_Feb AS m2
ON m1.PRCSINSTANCE = m2.PRCSINSTANCE;

SQL Server で結合を使用する方法の詳細については、こちらの結合シリーズをチェックしてください: http://sqlity.net/en/1146/a-join-a-day-introduction/

于 2012-12-15T23:30:38.163 に答える