Kalau kalian perah menggunakan Ms. excel kalian mungkin pernah menggunaan Sum, average, min, max, dan, count. Dalam SQL, fungsi-fungsi tersebut disebut dengan agregate functions. Aggregate functions adalah fungsi yang menghasikan satu nilai berdasarkan isi atau informasi dari dari beberapa baris data. Sintaks penulisannya untuk statement select bisa kalian lihat di bawah ini.
- Select aggregate_function (nama_kolom) as nama_hasil from nama_tabel
Kalau kalian belum pernah menggunakan fungsi-fungsi tersebut, kalian bisa melihat penjelasan dari kegunaannya di bawah ini.
- Sum : Mendapatkan total nilai dari kolom yang dicari.
- Avg : Mendapatkan rata-rata dari kolom yang dicari.
- Count : Mendapatkan banyaknya dari kolom yang dicari.
- Min : Nilai minimal
- Max : Nilai maksimal
Contoh Query
- Select SUM (nilai) AS total From siswa
- Select SUM (nilai) AS total, AVG (nilai) AS rata_rata, COUNT (nilai) AS jdata, min(nilai) AS minimum, max(nilai) as maksimum FROM siswa
//install librarynya kalau belum ada
#include <iostream>
#include <sqlite3.h>
char *err;
typedef char stringku[30];
int callback(void *notused, int jkolom, char **dataku, char **kolom){
printf("%s", dataku[0]);
printf("\n");
return 0;
}
void isi_database(sqlite3 *conn){
char query[255];
static stringku data[3][3]={{"Geri", "Saribumi", "75"}, {"Panji", "Wonokarto", "95"}, {"Tomi", "Gading", "80"}};
sqlite3_exec(conn, "Create Table siswa(id INTEGER Primary Key, nama Text, alamat Text, nilai INTEGER);", 0, 0, &err);
//tambahkan data
for(int i=0;i<3;i++){
sprintf(query, "INSERT INTO siswa(id, nama, alamat, nilai) VALUES('%d','%s', '%s', '%s')", i, data[i][0], data[i][1], data[i][2]);
sqlite3_exec(conn, query, 0, 0, &err);
}
}
int main(){
int res=0;
sqlite3 *conn=NULL;
sqlite3_stmt *stmt=NULL;
sqlite3_open("databaseku.dat", &conn);
//jika database kosong, tambah tabel
sqlite3_exec(conn, "Drop table siswa", callback, 0, &err);
isi_database(conn);
//gunakan query
printf("Banyaknya data : ");
sqlite3_exec(conn, "SELECT count(nilai) AS hasil FROM siswa", callback, 0, &err);
printf("\nSum : ");
sqlite3_exec(conn, "SELECT Sum(nilai) AS hasil FROM siswa", callback, 0, &err);
printf("\nRata-rata : ");
sqlite3_exec(conn, "SELECT Avg(nilai) AS hasil FROM siswa", callback, 0, &err);
sqlite3_close(conn);
return 0;
}
Banyaknya data : 3 Sum : 250 Rata-rata : 83.3333333333333
Berbeda dengan callback yang biasa saya contohkan sebelum ini, callback yang digunakan dalam kode program di atas tidak menampilkan nama tabel karena datanya hanya satu. Karena kolom yang ditampilkan aggregate function hanya ada satu, loop juga tidak diperlukan.