Operator SQL

Saat menggunakan WHERE, kita menggunakan operator perbandingan. Selain operator perbandingan, SQL juga menyediakan operator aritmetika dan operator bitwise yang termasuk operator binary. Dua jenis operator tersebut bisa digunakan untuk mengolah nilai dari kolom dalam dari satu baris data sebelum disimpan sebagai nama kolom dengan menggunakan klausa AS.

Operator aritmetika dan bitwise dalam query SQL sama dengan operator dalam bahasa C / C++. Sekedar sebagai pengingat, operator-operator tersebut bisa kalian lihat di bawah ini.

  • Penjumlahan ( + )
  • Pengurangan ( - )
  • Pembagian ( / )
  • Perkalian ( * )
  • Modulus ( % )
  • And ( & )
  • Or ( | )
  • Xor ( ^ )

Contoh Query :

  • Select (kuantitas * harga) AS total From penjualan
  • Select Sum(kuantitas*harga) AS total From penjualan

Kalian bisa menggunakan Sum untuk menjumlahkan hasil operasi aritmetika atau bitwise. Selain itu, kalian juga bisa menggunakan avg.

//install librarynya kalau belum ada
#include <iostream>
#include <sqlite3.h>

char *err;
typedef char stringku[30];

int simple_callback(void *notused, int jkolom, char **dataku, char **kolom){
   printf("%s\n", dataku[0]);
   printf("\n");
   return 0;
}

int callback(void *notused, int jkolom, char **dataku, char **kolom){
   for(int i=0;i<jkolom;i++)printf("%s = %s\n", kolom[i], dataku[i]);
   printf("\n");
   return 0;
}

void isi_database(sqlite3 *conn){
    char query[255];
    static stringku data[3][3]={{"Gula", "12000", "2"}, {"Terigu", "10000", "3"}, {"Mentega", "5000", "4"}};
	     
    sqlite3_exec(conn, "Create Table belanjaan(id INTEGER Primary Key, nama Text, harga INTEGER, kuantitas INTEGER);", 0, 0, &err); 
    //tambahkan data
    for(int i=0;i<3;i++){
        sprintf(query, "INSERT INTO belanjaan(id, nama, harga, kuantitas) 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;
	char query[255]="SELECT nama, harga, kuantitas, (harga*kuantitas) AS total FROM belanjaan";
	sqlite3 *conn=NULL;
	sqlite3_stmt *stmt=NULL;
	sqlite3_open("databaseku.dat", &conn);
	
	//jika database kosong, tambah tabel
	sqlite3_exec(conn, "Drop Table belanjaan", 0, 0, &err);
	isi_database(conn);
	
	//gunakan query
	sqlite3_exec(conn, query, callback, 0, &err);
	
	//tampilkan grand total
	printf("\ngrand total = ");
	sqlite3_exec(conn, "SELECT Sum(harga*kuantitas) AS grand_total FROM belanjaan", simple_callback, 0, &err);
	sqlite3_close(conn);
	return 0;
}
Output :
nama = Gula
harga = 12000
kuantitas = 2
total = 24000

nama = Terigu
harga = 10000
kuantitas = 3
total = 30000

nama = Mentega
harga = 5000
kuantitas = 4
total = 20000


grand total = 74000