Fungsi agregat terutamanya terdiri daripada: count, sum, min, max, avg, group_count()
Fokus pada group_count ( ) , kumpulan pertama mengikut lajur yang ditentukan oleh kumpulan oleh, dan pisahkan ia dengan pembatas, sambungkan nilai dalam kumpulan yang sama dan kembalikan hasil rentetan
Format : group_count([distinct ]Nama medan [susun mengikut medan mengisih asc/desc] [separator 'separator'])
Penerangan:
1: Gunakan berbeza untuk mengecualikan nilai pendua.
2 : Jika anda perlu mengisih nilai hasil, anda boleh menggunakan susunan mengikut klausa
3: pemisah ialah nilai rentetan, lalai ialah koma
1: char_length(s) mengembalikan rentetan s Bilangan aksara1:ABS(x) mengembalikan nilai mutlak x
2: Fungsi rentetan
2:CEIL(x) mengembalikan integer terkecil lebih besar daripada atau sama dengan x (dibundarkan ke atas)
3:FLOOR( x) mengembalikan integer terbesar kurang daripada atau sama dengan x ( Bundarkan ke bawah)
4:TERHEBAT(expr1,expr2...) mengembalikan nilai maksimum dalam senarai
5:LEAST(expr1,expr2... .) mengembalikan nilai minimum senarai
6 :MAX(x) Mengembalikan nilai maksimum medan x
7:MIN(x) Mengembalikan nilai minimum medan x
8:MOD(x, y) Mengembalikan baki selepas membahagikan x dengan y
9: PI() mengembalikan pi (3.141593)
10:POW(x,y) mengembalikan x dinaikkan kepada kuasa ke-y
11:RAND() mengembalikan nombor rawak dari 0 hingga 1
12:ROUND(x) mengembalikan integer yang paling hampir dengan nilai, (perbezaan terbesar dari ROUND ialah ia tidak akan dibundarkan)
2:character_length Mengembalikan bilangan aksara rentetan s3:concat(s1,s2,s3) Rentetan s1, s2 dan rentetan lain digabungkan menjadi satu rentetan
4:concat_ws( x,s1,s2..) Sama seperti fungsi concat(s1,s2,s3), tetapi x ditambah antara setiap rentetan, x boleh menjadi pemisah
5:field(s,s1,s2) return Kedudukan rentetan pertama s dalam senarai rentetan (s1, s2..)
6:length() mengembalikan bilangan bait utf-8 dalam mysql ialah tiga bait untuk aksara Cina
7:ltrim(s) Keluarkan ruang pada permulaan rentetan s Alih keluar ruang di sebelah kiri () keluarkan ruang pada kedua-dua belah
8: pertengahan(s,n,len) daripada rentetan panjang len pada kedudukan n s adalah sama dengan subrentetan(s,n,len)<.>9:position(s1,in,s) Dapatkan kedudukan permulaan s1 daripada rentetan s
10:replcae (s,s1,s2) Gantikan rentetan s2 dengan rentetan s1 dalam rentetan s
11:reverse( s) Balikkan susunan rentetan s
12:kanan(s,n) Kembalikan aksara N terakhir aksara rentetan s (n aksara diambil dari kanan)
13:strcmp(s1,s2) Membandingkan rentetan s1 dan s2. Jika s1 dan s2 adalah sama, kembalikan 0. Jika s1>s2, kembalikan 1. Jika s1 kurang daripada s2 mengembalikan -1
14:substr(s,start,length) memintas subrentetan panjang dari kedudukan permulaan rentetan s
15:ucase(s) atas(s) menukar rentetan kepada Huruf Besar
16:lcase(s) lower(s) Tukar rentetan kepada huruf kecil
3: Fungsi tarikh
3:from_unixtime(bigint unixtime,string-format) Tukar cap masa nilai milisaat Untuk tarikh format yang ditentukan4:curdate() Kembalikan tarikh semasa
5:current_date() Kembalikan semasa tarikh
6:current_timestamp() Kembalikan tarikh dan masa semasa
7:datediff(d1,d2) Kira bilangan hari antara tarikh d1>d2 cth:datediff('2022-01-01','2022 -02-01')
8:currtime() Kembalikan masa semasa
9:date_format(d, f) Paparkan tarikh d mengikut keperluan ungkapan f
4: Fungsi aliran kawalan
3:isnull(expression) Tentukan sama ada ungkapan itu adalah nullFungsi tetingkap baharu dalam mysql8.0 juga dipanggil fungsi tetingkap Bukan agregat adalah relatif kepada fungsi agregat mengembalikan nilai tunggal (iaitu pengelompokan) selepas mengira satu set data. fungsi bukan pengagregatan hanya akan memproses satu baris data pada satu masa Apabila fungsi pengagregatan tetingkap mengira hasil medan tertentu pada rekod baris, data dalam julat tetingkap boleh dimasukkan ke dalam fungsi pengagregatan tanpa mengubah nombor. baris 5.1 Fungsi nombor siri boleh merealisasikan pengisihan kumpulan dan menambah nombor siri4:nullif(expr1,expr2) Bandingkan dua rentetan Jika rentetan expr1 dan expr2 adalah sama, kembalikan nol, jika tidak, kembalikan expr1
5: ungkapan kes apabila keadaan1 maka hasil1 apabila keadaan2 maka keputusan2 yang lain berakhir bermakna permulaan fungsi kes, tamat bermakna Fungsi tamat Jika keadaan1 adalah benar, hasil1 dikembalikan. Jika syarat2 benar, hasil2 dikembalikan Apabila tiada satu pun daripadanya benar, hasilnya akan dikembalikan Apabila salah satu daripadanya benar, selebihnya tidak akan dilaksanakan
5: Fungsi Tetingkap
1: row_number()
2: pangkat()3: dense_rank()Writing: pilih id,...,dense_rank() over(partition by dname order by salary desc) as rn from employee;
Nota: Tiada partition dengan cara pengisihan global
5.2 Fungsi pengedaran
1:
percent_rank()
Tujuan: Setiap baris dikira mengikut formula (pangkat-1)/(baris-1) . Antaranya pangkat ialah nombor jujukan yang dijana oleh fungsi pangkat(), baris ialah jumlah bilangan baris dalam tetingkap semasa
2:cume_dist()
Tujuan: bilangan baris dalam kumpulan yang kurang daripada atau sama dengan nilai kedudukan semasa/jumlah bilangan baris dalam kumpulan
Senario aplikasi: Tanya perkadaran yang kurang daripada atau sama dengan gaji semasaKaedah penulisan: pilih dname ,ename,gaji,cume_dist() over(order by salary) as rn1,
cume_dist() over(partition by dname order by salary) as rn2 from pekerja;5.3 Fungsi sebelum dan selepas
1: lag(expr,n)
2: lead(expr,n)Tujuan: Kembali expr terletak n baris sebelum (lag(exor,n)) atau n baris selepas (lead(expr,n)) baris semasa Nilai
Senario aplikasi: Soal perbezaan antara skor yang pertama pelajar dan markah pelajar semasa (baris semasa boleh mempunyai nilai medan baris data sebelumnya)
5.4 Head dan fungsi ekor
1: first_value(expr)
2: last_value(expr)Tujuan: Mengembalikan nilai pertama (first_value(expr)) atau expr (last_value(expr)) terakhir
Senario permohonan: Buat masa ini, tanya gaji pekerja pertama dan terakhir diisih mengikut tarikh5.5 Fungsi lain
1: nth_value(expr,n)
2: ntile(n)Tujuan: Mengembalikan nilai expr ke-n dalam tetingkap menjadi ungkapan atau nama lajur
Senario permohonan: Pada gaji semasa, paparkan kedudukan kedua atau ketiga bagi setiap gaji gaji pekerja5.6 Fungsi agregat bertingkap
1: sum()
2: avg()
3: min()
4: max()Penulisan: pilih id,...,jumlah(gaji) over(partition by dname order by hiredate desc) as rn from employee;
Data setiap baris daripada rn ialah jumlah gaji baris semasa dan setiap baris sebelumnya
Jika tiada susunan mengikut penyata isihan, secara lalai semua data dalam kumpulan akan Laksanakan operasi jumlah pada data
Atas ialah kandungan terperinci Analisis contoh penggunaan fungsi MYSQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!