私はsensordataを格納するバックエンドとしてpostgresを使用しています。さまざまなセンサーが異なる周波数でロギングしています。私はそれぞれ別個の価値の最後を得たいと思う。私。私は次の表を持っています:テーブル内の複数のシリーズのそれぞれの最後の行を取得する
id | sensorid | type | value | datetime
--------+----------+------+------------+-------------------------------
302888 | 9 | 118 | 4829 | 2017-12-12 22:20:04.911429+01
302887 | 9 | 116 | 17000 | 2017-12-12 22:20:04.90125+01
302886 | 9 | 104 | 40400 | 2017-12-12 22:20:04.827895+01
302885 | 5 | 116 | 4294958596 | 2017-12-12 22:19:04.813092+01
302884 | 5 | 104 | 76100 | 2017-12-12 22:19:04.803245+01
302883 | 5 | 118 | 3976 | 2017-12-12 22:19:04.753291+01
302882 | 5 | 116 | 4294958596 | 2017-12-12 22:16:18.730765+01
302881 | 5 | 104 | 76100 | 2017-12-12 22:16:18.720933+01
302880 | 5 | 118 | 3976 | 2017-12-12 22:16:18.700545+01
302879 | 1 | 118 | 5410 | 2017-12-12 22:15:54.688361+01
302878 | 1 | 116 | 19000 | 2017-12-12 22:15:54.67866+01
302877 | 1 | 104 | 33700 | 2017-12-12 22:15:54.660863+01
302876 | 9 | 118 | 4892 | 2017-12-12 22:15:04.646695+01
などです。
私は、次のデータを取得したい:
id | sensorid | type | value | datetime
--------+----------+------+------------+-------------------------------
302888 | 9 | 118 | 4829 | 2017-12-12 22:20:04.911429+01
302887 | 9 | 116 | 17000 | 2017-12-12 22:20:04.90125+01
302886 | 9 | 104 | 40400 | 2017-12-12 22:20:04.827895+01
302885 | 5 | 116 | 4294958596 | 2017-12-12 22:19:04.813092+01
302884 | 5 | 104 | 76100 | 2017-12-12 22:19:04.803245+01
302883 | 5 | 118 | 3976 | 2017-12-12 22:19:04.753291+01
302879 | 1 | 118 | 5410 | 2017-12-12 22:15:54.688361+01
302878 | 1 | 116 | 19000 | 2017-12-12 22:15:54.67866+01
302877 | 1 | 104 | 33700 | 2017-12-12 22:15:54.660863+01
だから私は、各sensoridと種類の組み合わせのための最高のIDや日時を持つ行をしたいです。これは1つのSQL文で実行可能ですか?これは、仕事をする必要があります
も 'パーティションby''で[値]が含まれます。 –
私はそれが必要とは思わない。しかし、2つのレコードが同じ 'SENSORID'と' TYPE'で同時に記録されている場合は、 'DENSE_RANK'が良い方法でしょうか? – Vashi
良い点Vashiですが、私のアプリケーションでは決して起こることはありません。 (各sensoridは異なるatmegaボードを指し、タイプはそのボードがとった測定タイプを指します、ボードは特定の周波数で目を覚ましてそれを送信します) – MortenSickel