Mencari Nilai Paling Biasa untuk Lajur Diberi Nilai Lajur Lain dalam SQL
Dalam senario di mana jadual mengandungi berbilang lajur, seperti "country", "food_id", dan "eten", tugas biasa ialah menentukan nilai yang paling kerap berlaku untuk satu lajur ("food_id") dalam setiap nilai unik lajur lain ("negara").
Satu pendekatan, seperti yang dinyatakan dalam soalan, melibatkan mencipta jadual sementara dan melakukan berbilang subkueri untuk mengira kiraan, cari kiraan maksimum , dan dapatkan semula nilai "food_id" yang sepadan. Walaupun berfungsi, kaedah ini kelihatan menyusahkan.
Nasib baik, PostgreSQL 9.4 memperkenalkan penyelesaian yang lebih mudah: fungsi mod(). Fungsi ini menyediakan cara yang cekap untuk mencari nilai yang paling biasa untuk lajur tertentu dalam setiap kumpulan yang ditakrifkan oleh ungkapan kumpulan.
Untuk menggunakan fungsi mod() untuk tugasan ini, pertanyaan SQL berikut boleh digunakan:
SELECT mode() within group (order by food_id) FROM munch GROUP BY country
Pertanyaan ini memanfaatkan fungsi mod() untuk mengira nilai "food_id" yang paling biasa untuk setiap nilai "negara" yang unik. Klausa WITHIN GROUP (ORDER BY food_id) memastikan bahawa fungsi mod() beroperasi pada lajur "food_id" dalam setiap kumpulan negara, menyusun nilai dalam tertib menaik sebelum mengenal pasti mod.
Hasil pertanyaan ini , seperti yang ditunjukkan dalam jawapan yang disediakan, akan menjadi jadual yang memaparkan "negara" dan "food_id" yang sepadan dengannya. nilai:
country | mode -------------- GB | 3 US | 1
Atas ialah kandungan terperinci Bagaimana untuk Mencari ID Makanan Paling Kerap bagi setiap Negara dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!