Menu
CoddyTech

Menyimpan Satu Baris per Kunci

Termasuk bagian Lebih dari Dasar-Dasar dalam perjalanan SQL di Coddy. Pelajaran 26 dari 27.

Kamu akan sering memiliki tabel yang menampilkan sebuah kunci (pelanggan, sensor, produk) beberapa kali, dan kamu hanya ingin menyimpan yang terbaru atau yang memiliki skor tertinggi.

Gunakan ROW_NUMBER() seperti saat kamu menggunakan top-N, lalu pertahankan rn = 1.

WITH ranked AS (
    SELECT *,
           ROW_NUMBER() OVER (
               PARTITION BY customer_id ORDER BY purchased_at DESC
           ) AS rn
    FROM purchases
)
SELECT * FROM ranked WHERE rn = 1

PARTITION BY berarti "satu peringkat untuk setiap kunci ini"; ORDER BY berarti "yang terbaru lebih dulu". Baris 1 di setiap partisi adalah baris yang ingin kamu pertahankan.

challenge icon

Tantangan

Sedang

Tabel dan kolom yang tersedia:

  • readings: sensor_id, recorded_at, value

Untuk setiap sensor yang memiliki setidaknya 3 pembacaan, tampilkan satu pembacaan dengan nilai tertinggi. Jika dua pembacaan memiliki nilai value yang sama, pilih pembacaan yang lebih baru.

Tampilkan sensor_id, recorded_at, value, diurutkan berdasarkan sensor_id.

Coba sendiri

WITH ranked AS (
    -- TODO: pilih setiap pembacaan beserta peringkatnya dalam sensor masing-masing (rn)
    -- dan jumlah pembacaan pada sensor tersebut (total_readings)
)
SELECT sensor_id, recorded_at, value
FROM ranked
WHERE rn = 1 AND total_readings >= 3
ORDER BY sensor_id
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Lebih dari Dasar-Dasar

Latihan sendiri: Playground SQL