将来の予測であるトランザクションデータのテーブルがあります。したがって、同じ日付、タイプ、場所、および製品で識別される同じ予測は、時間が経つにつれて予測がより正確になり、再送されるため、複数回読み取られます。
同じタイプで同じ場所、製品、日付のトランザクションをグループ化するクエリを作成し、これらのグループから最新の更新されたタイムスタンプを持つトランザクションのみを選択したいと思います。
テーブルには現在数十万の行があり、時間が経つにつれて数百万になるので、かなり効率的なソリューションをいただければ幸いです:)
表の例:
date | location_code | product_code | quantity | type | updated_at
------------+------------------+---------------+----------+----------+------------
2013-02-04 | ABC | 123 | -26.421 | TRANSFER | 2013-01-12
2013-02-07 | ABC | 123 | -48.1 | SALE | 2013-01-10
2013-02-06 | BCD | 234 | -58.107 | SALE | 2013-01-11
2013-02-06 | BCD | 234 | -60 | SALE | 2013-01-10
2013-02-04 | ABC | 123 | -6.727 | TRANSFER | 2013-01-10
望ましい結果:
date | location_code | product_code | quantity | type | updated_at
------------+------------------+---------------+----------+----------+------------
2013-02-04 | ABC | 123 | -26.421 | TRANSFER | 2013-01-12
2013-02-07 | ABC | 123 | -48.1 | SALE | 2013-01-10
2013-02-06 | BCD | 234 | -58.107 | SALE | 2013-01-11
私は例えば試しました:
SELECT t.date, t.location_code, t.product_code, t.quantity, t.type, t.updated_at
FROM transactions t
INNER JOIN
(
SELECT MAX(updated_at) as max_updated_at
FROM transactions
GROUP BY product_code, location_code, type, date
) s on t.updated_at=max_updated_at;
しかし、これには時間がかかり、うまくいかないようです。
お手伝いありがとう!