回答編集履歴

2

修正

2017/10/03 16:22

投稿

sazi
sazi

スコア25174

test CHANGED
@@ -24,19 +24,11 @@
24
24
 
25
25
  inner join (
26
26
 
27
- select sub_id, sum(qty) as sum_qty from test group by sub_id
27
+ select sub_id, max(up_time) as max_up_time, sum(qty) as sum_qty from test group by sub_id
28
28
 
29
29
  ) as t2
30
30
 
31
- on t1.sub_id=t2.sub_id
31
+ on t1.sub_id=t2.sub_id and t1.up_time=t2.max_up_time
32
-
33
- inner join (
34
-
35
- select sub_id, max(up_time) as sum_qty from test group by sub_id
36
-
37
- ) as t2
38
-
39
- on t1.sub_id=t3.sub_id
40
32
 
41
33
  ```
42
34
 

1

追記

2017/10/03 16:22

投稿

sazi
sazi

スコア25174

test CHANGED
@@ -13,3 +13,33 @@
13
13
  where up_time=(select max(up_time) from test where sub_id=t1.sub_id)
14
14
 
15
15
  ```
16
+
17
+ 一応別解(相関問い合わせによるサブクエリーを使用しない版)
18
+
19
+ ```SQL
20
+
21
+ select t1.up_time, t1.picupno, t2.sum_qty
22
+
23
+ from test as t1
24
+
25
+ inner join (
26
+
27
+ select sub_id, sum(qty) as sum_qty from test group by sub_id
28
+
29
+ ) as t2
30
+
31
+ on t1.sub_id=t2.sub_id
32
+
33
+ inner join (
34
+
35
+ select sub_id, max(up_time) as sum_qty from test group by sub_id
36
+
37
+ ) as t2
38
+
39
+ on t1.sub_id=t3.sub_id
40
+
41
+ ```
42
+
43
+ MySQLはサンプルデータを触っている程度なので、大量のデータでのSQLの記述による性能差などは見地がありません。
44
+
45
+ なので、結果をフィードバックして頂けると喜びます。