Mengambil semula Rekod Pertama dan Terakhir daripada Data Dikumpulkan dengan Fungsi Agregat MySQL
Apabila berurusan dengan data terkumpul dalam MySQL, mungkin perlu untuk mengakses rekod pertama dan terakhir dalam setiap kumpulan. Sebagai contoh, pertimbangkan pertanyaan berikut:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
Pertanyaan ini mendapatkan semula harga minimum rendah, harga tinggi maksimum, harga pembukaan dan penutupan untuk setiap minggu dalam setahun. Walau bagaimanapun, jika matlamatnya adalah untuk mendapatkan rekod pertama dan terakhir setiap kumpulan, pertanyaan di atas tidak mencukupi.
Penyelesaian
Untuk mencapai matlamat ini, seseorang boleh menggunakan Fungsi GROUP_CONCAT dan SUBSTRING_INDEX. Pertanyaan berikut mengubah suai pertanyaan asal untuk memasukkan lajur untuk harga pembukaan pertama dan terakhir:
SELECT MIN(low_price), MAX(high_price), SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open, SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
Penjelasan
Dengan menggunakan fungsi ini, pertanyaan mendapatkan semula dengan cekap harga pembukaan pertama dan harga penutup terakhir untuk setiap kumpulan. Pendekatan ini mengelakkan keperluan untuk berbilang subkueri dan menawarkan penyelesaian yang berprestasi untuk mendapatkan semula data yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil Rekod Pertama dan Terakhir daripada Data Dikumpulkan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!