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 = 1PARTITION 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.
Tantangan
SedangTabel 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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Lebih dari Dasar-Dasar
3Agregasi dengan Kondisi
COUNT dengan CASESUM dengan CASEMengubah Baris menjadi KolomRangkuman: Sumber Trafik6Resep Analitik
Top-N per GrupPersentase dari TotalTotal KumulatifMenyimpan Satu Baris per KunciRekap: Pelanggan TeratasLatihan sendiri: Playground SQL