Saya hanya bisa membayangkan melakukan ini dengan dua permintaan basis data. Yang pertama menemukan jumlah baris dalam database, dan yang kedua memilih dengan ORDER BY
pada kolom saya tertarik dan di LIMIT X, 1
mana X adalah setengah jumlah baris.
Apakah ada cara sederhana untuk melakukan ini hanya dengan satu permintaan?
Saat ini saya menggunakan rata-rata dalam perhitungan saya, tetapi saya pikir rata-rata akan lebih baik; tidak ada batas atas nilai dan mereka dibatasi dari bawah oleh 0.
EDIT: ya, saya bermaksud mengatakan 'median' tetapi mengalami beberapa kesalahan otak & mencari 'berarti'. Saya sekarang telah menemukan jawabannya di stackoverflow
meta
sebentar sepertinya ada pembagian untuk cuaca pertanyaan ini harus di sini atau di SO. Saya menyadari ini mungkin bukan permintaan tingkat ninja , tapi itu membuat saya bingung dan tidak ada DBA di perusahaan tempat saya bekerja (total 6 orang).Jawaban:
Ada sedikit diskusi di sini tentang menghitung nilai median dari tabel MySQL. Cukup cari halaman untuk 'median'.
Selain itu, saya terkejut karena tidak ada fungsi bawaan untuk melakukan ini. Median sering lebih deskriptif kecenderungan sentral daripada rata-rata. Access / VBA memiliki lubang yang sama dalam daftar fungsinya.
sumber
Saya belum melihat solusi di mana pun yang berhasil mendapatkan median dalam satu permintaan. Saya tidak keberatan tabel temp, tetapi jika mereka tidak perlu, bagus! Inilah yang saya pikirkan:
Saya menguji ini untuk set genap, dan mendapat jawaban yang tepat. brand_prof hanya dua kolom: brand_name, dan laba, nilai desimal. Jika ini adalah nilai integer, Anda mungkin harus menggunakan "ceiling ((CAST COUNT (*) AS DECIMAL) ..." Lebih dari yang saya uji. Gagasan keren untuk menggunakan produk kartesius dan menghubungkan jumlah tanda itu bukan milikku, aku lupa penulisnya, sayangnya.
sumber