Pertanyaan pengagregatan (pembina pertanyaan 7)


Dalam aplikasi, kami sering menggunakan beberapa data statistik, seperti bilangan pengguna semasa (atau mereka yang memenuhi syarat tertentu), mata maksimum semua pengguna, skor purata pengguna, dll. ThinkPHP menyediakan kaedah untuk ini operasi statistik. Kaedah terbina dalam siri ini termasuk:

maxDapatkan nilai maksimum , parameter ialah nama medan yang hendak dikira (diperlukan) min Dapatkan nilai minimum, parameter ialah nama medan yang akan dikira (diperlukan) . Kaedah pengagregatan Jika tiada data, nilai lalainya ialah 0. Pertanyaan pengagregatan boleh dipadankan dengan syarat pertanyaan lain Dapatkan bilangan pengguna: Penyataan SQL yang dijana sebenar adalah: Atau berdasarkan statistik medan:
Db::table('think_user')->count('id');
Pernyataan SQL yang dijana ialah:
Kaedah Penerangan
kira Kira nombor, parameter adalah nama medan
Contoh penggunaan
Db::table('think_user')->count();
SELECT COUNT(*) AS tp_count FROM `think_user` LIMIT 1
SELECT COUNT(id) AS tp_count FROM `think_user` LIMIT 1

Dapatkan mata maksimum pengguna:

Db::table('think_user')->max('score');
Dijana Pernyataan SQL ialah:
SELECT MAX(score) AS tp_max FROM `think_user` LIMIT 1

Jika nilai maksimum yang anda mahu dapatkan bukan nilai angka, anda boleh menggunakan parameter kedua untuk mematikan penukaran paksa

Db::table('think_user')->max('name',false);

Dapatkan mata minimum pengguna yang mata lebih besar daripada 0:

Db::table('think_user')->where('score', '>', 0)->min('score');

Sama seperti kaedah maks, min juga Menyokong penggunaan parameter kedua

Db::table('think_user')->where('score', '>', 0)->min('name',false);

Dapatkan purata mata pengguna:

Db::table('think_user')->avg('score');

Penyataan SQL yang dijana ialah:

SELECT AVG(score) AS tp_avg FROM `think_user` LIMIT 1

Statistik jumlah skor pengguna:

Db::table('think_user')->where('id',10)->sum('score');

Pernyataan SQL yang dijana ialah:

SELECT SUM(score) AS tp_sum FROM `think_user` LIMIT 1

Untuk melaksanakan kumpulan pertanyaan, jika anda ingin menggunakan anda perlu melaksanakan pertanyaan itu sendiri, contohnya:

Db::table('score')->field('user_id,SUM(score) AS sum_score')->group('user_id')->select();