データベース内の 2 つの関数名の時間差を見つけたいです。データベースは次のようになります。
私がやりたいのは、同じ名前を持つ 2 つの連続した関数名の間の時間差を見つけることです。たとえば、出力は行番号「2」と行番号「3」の「getPrice」、行「3」と行「5」の「getPrice」の時間差など、その他すべての時間と他のすべての時間の出力になります。関数名。私を助けてください、そしてどうもありがとう!
私は試した
SELECT a.lid, a.date, (b.date-a.date) as timeDifference
FROM myTable a
INNER JOIN myTable b ON b.lid = (a.lid+1)
ORDER BY a.lid ASC;
問題は、たとえそれらが同一でなくても、連続する関数名に時間差が生じることです!
@トンボム
テストに使用するテーブルがあり、以前に提供した例とは異なる変数名を持っています。テーブルは次のようになります。
コードを適用した後 (もちろん変数名をこの表に合わせて変更します)、出力は次のようになります。
ご覧のとおり、「getTax」は「getPrice」から差し引かれていますが、それらは異なります。どうすればこの問題を解決できますか?? どうもありがとう。
私が構築しようとしているスキーマは次のとおりです。
CREATE TABLE `test` (
`id` INT NOT NULL AUTO_INCREMENT ,
`nserviceName` VARCHAR(45) NULL ,
`functionName` VARCHAR(45) NULL ,
`time` TIMESTAMP NULL ,
`tps` INT NULL ,
`clientID` INT NULL ,
PRIMARY KEY (`id`) );
挿入は次のとおりです。
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('1', 'X1', 'getPrice', '2013-05-23 00:36:08', '22', '0');
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('2', 'X2', 'getTax', '2013-05-23 00:38:00', '33', '0');
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('3', 'X1', 'getPrice', '2013-05-23 00:35:00', '12', '0');
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('4', 'X1', 'getPrice', '2013-05-23 00:35:00', '11', '0');
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('5', 'X2', 'getTax', '2013-05-23 00:35:00', '88', '0');
INSERT INTO `test` (`id`, `nserviceName`, `functionName`, `time`, `tps`, `clientID`) VALUES ('6', 'X1', 'getPrice', '2013-05-23 00:35:00', '33', '0');
ありがとう。
@tombom テーブルに対して実行したい操作は、次の画像のようなものです。
ここで、前にレコードがない最初のレコード X1 getPrice から開始します。したがって、操作は必要ありません。次に、2 番目の getTax の前に getPrice がないことを確認します。これは同一ではないため、操作は実行されません。次に、3 番目の getPrice の前に getTax があるため、それを無視し、上記の getTax をチェックして、ここで getPrice を見つけます。これにより、getPrice(#3) と getPrice(#1) の間の時間差が実行されます。次の行 4 の getPrice はその上の行をチェックし、そのすぐ上の行が getPrice であることを検出するため、getPrice*(#4) と getPrice(#3) の時間差が検出されます。次に、行 5 の getTax は、行 #2 にある同様の functionName (getTax) が見つかるまで、その上の行をチェックします。次に、行 5 の getTax と行 2 の getTax の間の時間差が検出されます。
どうもありがとう..