いくつかの管轄区域によって作成された交通違反切符を含むPostgreSQLデータベースがあります。
一部の管轄区域では、1つの交通機関の停車地に複数のチケットが書き込まれているかどうかが示されていません。ただし、それは他のフィールドを分析することで推測できます。このデータを検討してください。
ticket_id timestamp drivers_license
----------------------------------------------
1 2008-08-07 01:51:00 11111111
2 2008-08-07 01:51:00 11111111
3 2008-08-07 02:02:00 22222222
4 2008-08-07 02:25:00 33333333
5 2008-08-07 04:23:00 44444444
6 2008-08-07 04:23:00 55555555
7 2008-08-07 04:23:00 44444444
私はそれを推測することができます:
- チケット1と2は、運転免許証番号とタイムスタンプを共有しているため、1つの交通機関で作成されました。
- 5と7についても同じですが、チケット6がそれらの間にあることに注意してください。おそらく、別の役員が別の場所で同時にチケットを書いていたか、データ入力オペレーターが順不同で何かを入力したのでしょう。
交通停止ごとに一意のIDを持つ別の列を追加したいと思います。値が重複するため、テーブルの主キーにはなりません。例えば:
ticket_id timestamp drivers_license stop_id
--------------------------------------------------------
1 2008-08-07 01:51:00 11111111 1
2 2008-08-07 01:51:00 11111111 1
3 2008-08-07 02:02:00 22222222 2
4 2008-08-07 02:25:00 33333333 3
5 2008-08-07 04:23:00 44444444 4
6 2008-08-07 04:23:00 55555555 5
7 2008-08-07 04:23:00 44444444 4
C#でこれを行うための計算集約型の欲張りアルゴリズムの方法を考えることができますが、機能する効率的なSQLクエリはありますか?