Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir daripada Baris Berkumpulan dengan Fungsi Agregat dalam MySQL?

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

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-20 00:56:02363semak imbas

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)

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 

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!

Kenyataan:
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