回答編集履歴

2 修正

sazi

sazi score 12198

2017/10/04 01:22  投稿

sub_id毎の最新日付のデータを取得することと、sub_id毎の集計を取得することを分けて取得することを思いつけば、わりとすんなりと書けると思います。
```SQL
select up_time, picupno
    ,(select sum(qty) from test where sub_id=t1.sub_id) as sum_qty
from test as t1
where up_time=(select max(up_time) from test where sub_id=t1.sub_id)
```
一応別解(相関問い合わせによるサブクエリーを使用しない版)
```SQL
select t1.up_time, t1.picupno, t2.sum_qty
from   test as t1
       inner join (
           select sub_id, sum(qty) as sum_qty from test group by sub_id
           select sub_id, max(up_time) as max_up_time, sum(qty) as sum_qty from test group by sub_id
       ) as t2
       on t1.sub_id=t2.sub_id
       inner join (
           select sub_id, max(up_time) as sum_qty from test group by sub_id
       ) as t2
       on t1.sub_id=t3.sub_id     
       on t1.sub_id=t2.sub_id and t1.up_time=t2.max_up_time
```
MySQLはサンプルデータを触っている程度なので、大量のデータでのSQLの記述による性能差などは見地がありません。
なので、結果をフィードバックして頂けると喜びます。
1 追記

sazi

sazi score 12198

2017/10/04 01:20  投稿

sub_id毎の最新日付のデータを取得することと、sub_id毎の集計を取得することを分けて取得することを思いつけば、わりとすんなりと書けると思います。
```SQL
select up_time, picupno
    ,(select sum(qty) from test where sub_id=t1.sub_id) as sum_qty
from test as t1
where up_time=(select max(up_time) from test where sub_id=t1.sub_id)
```
```
一応別解(相関問い合わせによるサブクエリーを使用しない版)
```SQL
select t1.up_time, t1.picupno, t2.sum_qty
from   test as t1
       inner join (
           select sub_id, sum(qty) as sum_qty from test group by sub_id
       ) as t2
       on t1.sub_id=t2.sub_id
       inner join (
           select sub_id, max(up_time) as sum_qty from test group by sub_id
       ) as t2
       on t1.sub_id=t3.sub_id     
```
MySQLはサンプルデータを触っている程度なので、大量のデータでのSQLの記述による性能差などは見地がありません。
なので、結果をフィードバックして頂けると喜びます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る