回答編集履歴

4

推敲

2020/02/28 05:45

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  SELECT *
20
20
 
21
- , ROW_NUMBER() OVER (PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 交換回数
21
+ , ROW_NUMBER() OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 交換回数
22
22
 
23
23
  , 走行距離- lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 走行距離の差
24
24
 

3

訂正

2020/02/28 05:45

投稿

sazi
sazi

スコア25195

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 交換作業日) - 走行距離 AS 走行距離の差
23
+ , 走行距離- lag(走行距離) OVER(PARTITION BY 車種, 車体番号, 部品番号 ORDER BY 交換作業日) AS 走行距離の差
24
24
 
25
25
  FROM tb_before
26
26
 

2

追記

2020/02/28 05:45

投稿

sazi
sazi

スコア25195

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

推敲

2020/02/28 05:43

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
 
10
10
 
11
- 多分パフォーマンスを気にされているのだと思いますが、清野については記述が簡潔であれば早いという訳ではありません。
11
+ 多分パフォーマンスを気にされているのだと思いますが、性能については記述が簡潔であれば早いという訳ではありません。
12
12
 
13
13
  実行計画次第ではチューニングが必要でしょう。