回答編集履歴
4
推敲
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
SELECT *
|
20
20
|
|
21
|
-
, ROW_NUMBER() OVER
|
21
|
+
, ROW_NUMBER() OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 交換回数
|
22
22
|
|
23
23
|
, 走行距離- lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 走行距離の差
|
24
24
|
|
3
訂正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
, ROW_NUMBER() OVER (PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 交換回数
|
22
22
|
|
23
|
-
, lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日)
|
23
|
+
, 走行距離- lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 走行距離の差
|
24
24
|
|
25
25
|
FROM tb_before
|
26
26
|
|
2
追記
test
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
「走行距離の差」は[lag()関数](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_lag)が用途に適しています。
|
2
2
|
|
3
|
-
「交換回数」は相関副問合せを用いればいいと思います。
|
3
|
+
「交換回数」は~~相関副問合せ~~同じくWindow関数の[Row_Number()](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_row-number)を用いればいいと思います。
|
4
4
|
|
5
|
-
|
5
|
+
~~
|
6
6
|
|
7
7
|
> レコード数は非常に多いテーブルとなっておりまして、なるべくシンプルな計算だと非常にありがたいです。
|
8
8
|
|
@@ -11,3 +11,17 @@
|
|
11
11
|
多分パフォーマンスを気にされているのだと思いますが、性能については記述が簡潔であれば早いという訳ではありません。
|
12
12
|
|
13
13
|
実行計画次第ではチューニングが必要でしょう。
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
```SQL
|
18
|
+
|
19
|
+
SELECT *
|
20
|
+
|
21
|
+
, ROW_NUMBER() OVER (PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 交換回数
|
22
|
+
|
23
|
+
, lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) - 走行距離 AS 走行距離の差
|
24
|
+
|
25
|
+
FROM tb_before
|
26
|
+
|
27
|
+
```
|
1
推敲
test
CHANGED
@@ -8,6 +8,6 @@
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
多分パフォーマンスを気にされているのだと思いますが、
|
11
|
+
多分パフォーマンスを気にされているのだと思いますが、性能については記述が簡潔であれば早いという訳ではありません。
|
12
12
|
|
13
13
|
実行計画次第ではチューニングが必要でしょう。
|