Bagaimana untuk Mengambil Rekod Pertama dan Terakhir daripada Data Dikumpulkan dalam MySQL?

DDD
Lepaskan: 2024-11-08 19:16:02
asal
1021 orang telah melayarinya

How to Retrieve First and Last Records from Grouped Data in MySQL?

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

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

Penjelasan

  • GROUP_CONCAT: Menggabungkan nilai-nilai lajur tertentu (cth., buka) dalam setiap kumpulan, dipisahkan oleh a koma.
  • SUBSTRING_INDEX: Mengeluarkan subrentetan sebelum atau selepas kejadian tertentu bagi pembatas (dalam kes ini, koma).

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan