Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih ID dengan Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL?

Bagaimana untuk Memilih ID dengan Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL?

Barbara Streisand
Barbara Streisandasal
2024-12-27 18:28:11775semak imbas

How to Select the ID with the Maximum Date for Each Category in PostgreSQL?

Memilih ID dengan Tarikh Maksimum Dikumpulkan Mengikut Kategori dalam PostgreSQL

Untuk mendapatkan ID dengan tarikh maksimum bagi setiap kategori dalam PostgreSQL, kita boleh menggunakan klausa DISTINCT ON yang berkuasa, yang merupakan lanjutan kepada perintah DISTINCT standard. Klausa ini membenarkan kami mengagregatkan data berdasarkan kriteria tertentu sambil mengekalkan keunikan baris individu.

Pertimbangkan sampel data berikut:

id  category  date
1   a         2013-01-01
2   b         2013-01-03
3   c         2013-01-02
4   a         2013-01-02
5   b         2013-01-02
6   c         2013-01-03
7   a         2013-01-03
8   b         2013-01-01
9   c         2013-01-01

Untuk memilih ID dengan tarikh maksimum bagi setiap kategori menggunakan DISTINCT ON sintaks ialah:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC;

Output yang terhasil akan be:

id
7
2
6

Pertanyaan ini mengisih data dahulu mengikut kategori dalam tertib menaik dan kemudian mengikut tarikh dalam tertib menurun. Klausa DISTINCT ON kemudiannya memastikan bahawa untuk setiap kategori berbeza, hanya baris dengan tarikh maksimum dipaparkan, menghasilkan output yang diingini.

Jika lajur tarikh membenarkan nilai NULL, adalah penting untuk memasukkan NULLS Klausa LAST untuk memastikan bahawa nilai NULL diisih terakhir. Contohnya:

SELECT DISTINCT ON (category)
       id
FROM   tbl
ORDER  BY category, date DESC NULLS LAST;

Atas ialah kandungan terperinci Bagaimana untuk Memilih ID dengan Tarikh Maksimum untuk Setiap Kategori dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn