Anda dapat menggunakan fungsi agregat untuk melakukan perhitungan ringkasan pada satu set data. Topik ini menjelaskan sintaksis fungsi agregat dan memberikan contoh penggunaannya dalam AnalyticDB for MySQL.
AnalyticDB for MySQL mendukung fungsi agregat berikut:
ARBITRARY: Mengembalikan nilai acak dari satu set data.
AVG: Menghitung nilai rata-rata dari satu set nilai numerik.
BIT_AND: Mengembalikan hasil operasi bitwise AND pada semua bit dari nilai input.
BIT_OR: Mengembalikan hasil operasi bitwise OR pada semua bit dari nilai input.
BIT_XOR: Mengembalikan hasil operasi bitwise XOR pada semua bit dari nilai input.
COUNT: Menghitung jumlah rekaman yang dikembalikan oleh kueri SELECT.
MAX: Menghitung nilai maksimum dari satu set nilai numerik.
MIN: Menghitung nilai minimum dari satu set nilai numerik.
STD, STDDEV, atau STDDEV_POP: Mengembalikan deviasi standar populasi dari semua nilai input.
STDDEV_SAMP: Mengembalikan deviasi standar sampel dari satu set bilangan bulat, desimal, atau floating-point.
SUM: Menghitung jumlah dari semua nilai input.
VARIANCE (fungsi SQL non-standar): Mengembalikan variansi standar populasi dari satu set bilangan bulat, desimal, atau floating-point.
VAR_POP (fungsi SQL standar): Mengembalikan variansi standar populasi dari satu set bilangan bulat, desimal, atau floating-point.
VAR_SAMP: Mengembalikan variansi sampel dari satu set bilangan bulat, desimal, atau floating-point.
GROUP_CONCAT: Mengembalikan hasil string dari nilai-nilai yang digabungkan dari sebuah grup. Nilai berasal dari hasil yang dikembalikan oleh klausa
GROUP BY.
Dalam topik ini, tabel bernama testtable digunakan di semua fungsi agregat kecuali fungsi GROUP_CONCAT(). Pernyataan berikut digunakan untuk membuat tabel:
CREATE TABLE testtable(a INT) DISTRIBUTED BY HASH(a);Pernyataan berikut digunakan untuk menyisipkan data uji ke dalam tabel testtable:
INSERT INTO testtable VALUES (1),(2),(3);ARBITRARY
arbitrary(x)Deskripsi: Fungsi ini mengembalikan nilai acak dari satu set data.
Tipe data nilai input: Semua tipe data.
Tipe data nilai pengembalian: Sesuai dengan tipe data nilai input fungsi ini.
Contoh
SELECT arbitrary(a) FROM testtable;Informasi berikut dikembalikan:
+--------------+ | arbitrary(a) | +--------------+ | 2 | +--------------+
AVG
avg(x) Deskripsi: Fungsi ini menghitung nilai rata-rata dari satu set nilai numerik.
Tipe data nilai input: BIGINT, DOUBLE, atau FLOAT.
Tipe data nilai pengembalian: DOUBLE.
Contoh
SELECT avg(a) FROM testtable;Informasi berikut dikembalikan:
+--------+ | avg(a) | +--------+ | 2.0 | +--------+
BIT_AND
bit_and(x)Deskripsi: Fungsi ini mengembalikan hasil operasi bitwise
ANDpada semua bit dari nilai input.Tipe data nilai input: BIGINT, DOUBLE, atau FLOAT.
Tipe data nilai pengembalian: BIGINT.
Contoh
SELECT bit_and(a) FROM testtable;Informasi berikut dikembalikan:
+------------+ | bit_and(a) | +------------+ | 0 | +------------+
BIT_OR
bit_or(x)Deskripsi: Fungsi ini mengembalikan hasil operasi bitwise
ORpada semua bit dari nilai input.Tipe data nilai input: BIGINT, DOUBLE, atau FLOAT.
Tipe data nilai pengembalian: BIGINT.
Contoh
SELECT bit_or(a) FROM testtable;Informasi berikut dikembalikan:
+-----------+ | bit_or(a) | +-----------+ | 3 | +-----------+
BIT_XOR
bit_xor(x)Deskripsi: Fungsi ini mengembalikan hasil operasi bitwise XOR pada semua bit dari nilai input.
Tipe data nilai input: BIGINT, DOUBLE, atau FLOAT.
Tipe data nilai pengembalian: BIGINT.
Contoh
SELECT bit_xor(a) FROM testtable;Informasi berikut dikembalikan:
+------------+ | bit_xor(a) | +------------+ | 0 | +------------+
COUNT
count([distinct|all] x) Deskripsi: Fungsi ini menghitung jumlah rekaman yang dikembalikan oleh kueri SELECT.
CatatanDeskripsi:
distinctdanallmenentukan apakah akan menghapus rekaman duplikat selama penghitungan. Nilai defaultnya adalahall, yang menentukan bahwa semua rekaman dihitung. Jikadistinctditentukan, hanya rekaman dengan nilai unik yang dihitung.Tipe data nilai input: NUMERIC, STRING, atau BOOLEAN.
Tipe data nilai pengembalian: BIGINT.
Contoh
Menghitung jumlah rekaman yang nilainya unik di kolom a tabel
testtable.SELECT count(distinct a) FROM testtable;Informasi berikut dikembalikan:
+-------------------+ | count(distinct a) | +-------------------+ | 3 | +-------------------+Menghitung jumlah semua rekaman di tabel
testtableberdasarkan nilai di kolom a.SELECT count(all a) FROM testtable;Informasi berikut dikembalikan:
+--------------+ | count(all a) | +--------------+ | 3 | +--------------+
MAX
max(x) Deskripsi: Fungsi ini menghitung nilai maksimum dari satu set nilai numerik.
Tipe data nilai input: Semua tipe data. Namun, data bertipe BOOLEAN tidak termasuk dalam perhitungan.
CatatanJika nilai di kolom tertentu adalah
NULL, baris yang berisi nilai tersebut tidak termasuk dalam perhitungan.Tipe data nilai pengembalian: Sesuai dengan tipe data nilai input fungsi ini.
Contoh
SELECT max(a) FROM testtable;Informasi berikut dikembalikan:
+--------+ | max(a) | +--------+ | 3 | +--------+
MIN
min(value x) Deskripsi: Fungsi ini menghitung nilai minimum dari satu set nilai numerik.
Tipe data nilai input: Semua tipe data. Namun, data bertipe BOOLEAN tidak termasuk dalam perhitungan.
CatatanJika nilai di kolom tertentu adalah
NULL, baris yang berisi nilai tersebut tidak termasuk dalam perhitungan.Tipe data nilai pengembalian: Sesuai dengan tipe data nilai input fungsi ini.
Contoh
SELECT min(a) FROM testtable;Informasi berikut dikembalikan:
+--------+ | min(a) | +--------+ | 1 | +--------+
STD, STDDEV, atau STDDEV_POP
std(x)
stddev(x)
stddev_pop(x)Deskripsi: Fungsi ini mengembalikan deviasi standar populasi dari semua nilai input.
Tipe data nilai input: BIGINT atau DOUBLE.
Tipe data nilai pengembalian: DOUBLE.
Contoh
Contoh 1:
SELECT std(a) FROM testtable;Informasi berikut dikembalikan:
+-------------------+ | std(a) | +-------------------+ | 0.816496580927726 | +-------------------+Contoh 2:
SELECT stddev_pop(a) FROM testtable;Informasi berikut dikembalikan:
+-------------------+ | stddev_pop(a) | +-------------------+ | 0.816496580927726 | +-------------------+
STDDEV_SAMP
stddev_samp(x)Deskripsi: Fungsi ini mengembalikan deviasi standar sampel dari satu set bilangan bulat, desimal, atau floating-point.
Tipe data nilai input: BIGINT atau DOUBLE.
Tipe data nilai pengembalian: DOUBLE.
Contoh
SELECT stddev_samp(a) FROM testtable;Informasi berikut ini dikembalikan:
+----------------+ | stddev_samp(a) | +----------------+ | 1.0 | +----------------+
SUM
sum(x)Deskripsi: Fungsi ini menghitung jumlah dari semua nilai input.
Tipe data nilai input: BIGINT, DOUBLE, atau FLOAT.
Tipe data nilai pengembalian: BIGINT.
Contoh
SELECT sum(a) FROM testtable;Informasi berikut dikembalikan:
+--------+ | sum(a) | +--------+ | 6 | +--------+
VARIANCE
variance(x)Deskripsi: Fungsi ini mengembalikan variansi standar populasi dari satu set bilangan bulat, desimal, atau floating-point.
CatatanFungsi
VARIANCE()mengabaikan baris yang memiliki nilai NULL. Jika semua nilai dalam satu set adalah NULL, fungsiVARIANCE()langsung mengembalikan NULL.Fungsi
VARIANCE()adalah ekstensi terhadap SQL standar dan dapat digantikan oleh fungsi SQL standarVAR_POP().
Tipe data nilai input: BIGINT atau DOUBLE.
Tipe data nilai pengembalian: DOUBLE.
Contoh
SELECT variance(a) FROM testtable; +----------------------------+ | variance(a) | +----------------------------+ | 0.6666666666666666 |
VAR_POP
var_pop(x)Deskripsi: Fungsi ini mengembalikan variansi standar populasi dari satu set bilangan bulat, desimal, atau floating-point.
CatatanFungsi
VAR_POP()mengabaikan baris yang memiliki nilai NULL. Jika semua nilai dalam satu set adalah NULL, fungsiVAR_POP()langsung mengembalikan NULL.Anda juga dapat menggunakan fungsi
VARIANCE(), yang setara dengan fungsi VAR_POP() tetapi bukan fungsi SQL standar.
Tipe data nilai input: BIGINT atau DOUBLE.
Tipe data nilai pengembalian: DOUBLE.
Contoh
SELECT var_pop(a) FROM testtable;Informasi berikut dikembalikan:
+--------------------+ | var_pop(a) | +--------------------+ | 0.6666666666666666 | +--------------------+
VAR_SAMP
var_samp(x)Deskripsi: Fungsi ini mengembalikan variansi sampel dari satu set bilangan bulat, desimal, atau floating-point.
Tipe data nilai input: BIGINT atau DOUBLE.
Tipe data nilai pengembalian: DOUBLE.
Contoh
SELECT var_samp(a) FROM testtable;Informasi berikut dikembalikan:
+-------------+ | var_samp(a) | +-------------+ | 1.0 | +-------------+
GROUP_CONCAT
GROUP_CONCAT([DISTINCT] col_name
[ORDER BY col_name [ASC | DESC]]
[SEPARATOR str_val])Klausa | Wajib | Deskripsi |
| Tidak | Menentukan kolom dari mana Anda ingin menghapus duplikat. |
| Menentukan kolom yang ingin Anda urutkan dalam grup. Metode pengurutan berikut didukung:
Jika Anda tidak menentukan metode pengurutan, urutan menaik digunakan. | |
| Menentukan pemisah yang digunakan untuk memisahkan nilai dalam grup. Jika Anda tidak menentukan pemisah, koma (,) digunakan. |
Deskripsi: Fungsi ini mengembalikan hasil string dari nilai-nilai yang digabungkan dari sebuah grup. Nilai berasal dari hasil yang dikembalikan oleh klausa
GROUP BY.CatatanNULLhanya dikembalikan jika semua nilai di kolom yang ingin Anda gabungkan menggunakan fungsiGROUP_CONCAT()adalah NULL.Tipe data nilai input: STRING.
Tipe data nilai pengembalian: STRING.
Contoh:
Buat tabel bernama
personyang menggunakan fungsiGROUP_CONCAT().CREATE TABLE person(id INT,name VARCHAR,age INT ) DISTRIBUTED BY HASH(id);Sisipkan data ke dalam tabel.
INSERT INTO person VALUES (1,'mary',13),(2,'eva',14),(2,'adam',13),(3,'eva',13),(3,null,13),(3,null,null),(4,null,13),(4,null,null);Kelompokkan tabel person berdasarkan kolom
id. Gunakan fungsiGROUP_CONCAT()untuk menampilkan nilai unik dari kolomnamedengan ID yang sama, urutkan tabel secara menurun berdasarkan kolomname, dan pisahkan nilai kolomnamedengan tanda pagar (#) di setiap grup.SELECT id, GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '#') FROM person GROUP BY id;Informasi berikut dikembalikan:
+------+--------------------------------------------------------------+ | id | GROUP_CONCAT(DISTINCT name ORDER BY name DESC SEPARATOR '#') | +------+--------------------------------------------------------------+ | 2 | eva#adam | | 1 | mary | | 4 | NULL | | 3 | eva | +------+--------------------------------------------------------------+