Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir daripada Baris Berkumpulan dengan Fungsi Agregat dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-11-20 00:56:02
asal
359 orang telah melayarinya

How to Retrieve the First and Last Records from Grouped Rows with Aggregate Functions in MySQL?

Mengambil semula Rekod Pertama dan Terakhir daripada Baris Dikumpulkan dengan Fungsi Agregat dalam MySQL

Dalam SQL, fungsi agregat membolehkan ringkasan data yang cekap merentas kumpulan . Walau bagaimanapun, apabila menemui rekod berkumpulan, pengguna mungkin menghadapi cabaran dalam mendapatkan semula rekod pertama dan terakhir setiap kumpulan. Ini menjadi sangat penting apabila bekerja dengan jadual besar.

Pertimbangkan pertanyaan berikut:

SELECT MIN(low_price), MAX(high_price), open, close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)
Salin selepas log masuk

Walaupun pertanyaan ini menyediakan statistik agregat untuk setiap kumpulan (seperti harga minimum dan maksimum), ia tidak tidak menyediakan rekod pertama dan terakhir untuk setiap minggu. Untuk menangani keperluan ini, MySQL menawarkan beberapa pendekatan.

Menggunakan GROUP_CONCAT dan SUBSTRING_INDEX

Satu teknik yang cekap melibatkan memanfaatkan fungsi GROUP_CONCAT dan SUBSTRING_INDEX. GROUP_CONCAT menggabungkan nilai yang ditentukan dalam kumpulan, dipisahkan oleh pembatas. SUBSTRING_INDEX, seterusnya, mengekstrak subrentetan daripada rentetan bercantum.

Begini cara kami boleh menggunakan fungsi ini untuk mencapai hasil yang kami inginkan:

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 
Salin selepas log masuk

Pendekatan ini menghapuskan keperluan untuk subkueri yang mahal dan terbukti sangat cekap untuk senario khusus sedemikian.

Untuk maklumat lanjut tentang Fungsi GROUP_CONCAT dan SUBSTRING_INDEX, rujuk kepada dokumentasi MySQL rasmi.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir daripada Baris Berkumpulan dengan Fungsi Agregat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan