Sunday, September 16, 2012

SQL Functions

SQL FUNCTIONS

Penulisan saya kali ini seputar tentang fungsi sql, penulisan ini merupakan kaitan dari SQL Advanced
SQL Functions adalah penulisan saya terakhir tentang SQL, saya berharap dalam penerapan lebih lanjut para pembaca dapat mengaplikasikan dalam latihan-latihan sendiri sehingga mencapai tingkat pengertian yang lebih mendalam. dalam SQL Functions yang kali ini saya ingin bagi kan adalah bentukan fungsi built in untuk melakukan perhitungan pada data, Berikut penulisan kali ini ;

SQL Aggregate Functions

Fungsi agregat SQL mengembalikan nilai tunggal, dihitung dari nilai-nilai dalam kolom.
Berguna aggregate functions :
  • AVG() - Mengembalikan nilai rata-rata
  • COUNT() - Mengembalikan jumlah baris
  • FIRST() - Mengembalikan nilai pertama
  • LAST() - Mengembalikan nilai terakhir
  • MAX() - Mengembalikan nilai terbesar
  • MIN() - Mengembalikan nilai terkecil
  • SUM() - Mengembalikan jumlahnya

SQL Scalar functions

mengembalikan nilai tunggal, berdasarkan pada nilai masukan.
Scalar functions :
  • UCASE() - Mengkonversi lapangan ke huruf besar
  • LCASE() - Mengkonversi lapangan menjadi huruf kecil
  • MID() - Ekstrak karakter dari kolom teks
  • LEN() - Mengembalikan panjang dari kolom teks
  • ROUND() - Rounds bidang numerik dengan jumlah desimal yang ditentukan
  • NOW() - Mengembalikan tanggal sistem saat ini dan waktu
  • FORMAT() - Format bagaimana lapangan yang akan ditampilkan
Tip : The aggregate functions dan scalar functions akan dijelaskan secara rinci dalam penulisan berikut.
  •  SQL AVG ()
fungsi mengembalikan nilai rata-rata dari kolom numerik.

SQL AVG () Sintaks

SELECT AVG(column_name) FROM table_name


SQL AVG () Contoh

saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen

Sekarang kita ingin mencari nilai rata-rata bidang "OrderPrice".

saya menggunakan pernyataan SQL berikut :

SELECT AVG(OrderPrice) AS OrderAverage FROM Orders

Hasilnya akan terlihat seperti ini :

OrderAverage
950

Sekarang kita ingin mencari pelanggan yang memiliki nilai OrderPrice lebih tinggi dari nilai rata-rata OrderPrice.

saya menggunakan pernyataan SQL berikut :

SELECT Customer FROM Orders
WHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)

Hasilnya akan terlihat seperti ini :

Pelanggan
Hansen
Nilsen
Jensen

  • SQL COUNT ()
 fungsi mengembalikan jumlah baris yang cocok dengan kriteria tertentu.

SQL COUNT (column_name) Sintaks

COUNT (column_name) mengembalikan fungsi jumlah nilai (nilai NULL tidak akan dihitung) dari kolom tertentu :

SELECT COUNT(column_name) FROM table_name

SQL COUNT (*) Sintaks

COUNT (*) fungsi mengembalikan jumlah record dalam sebuah tabel :

SELECT COUNT(*) FROM table_name

SQL COUNT (DISTINCT column_name) Sintaks

COUNT (DISTINCT column_name) mengembalikan fungsi jumlah nilai yang berbeda dari kolom yang ditentukan :

SELECT COUNT(DISTINCT column_name) FROM table_name
Catatan : COUNT (DISTINCT) bekerja dengan ORACLE dan Microsoft SQL Server, tetapi tidak dengan Microsoft Access.


SQL COUNT (column_name) Contoh

saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen

Sekarang kita ingin menghitung jumlah pesanan dari "Pelanggan Nilsen".

saya menggunakan pernyataan SQL berikut :

SELECT COUNT(Customer) AS CustomerNilsen FROM Orders
WHERE Customer='Nilsen'

Hasil dari pernyataan SQL di atas akan menjadi 2, karena Nilsen pelanggan telah membuat 2 perintah secara total :

CustomerNilsen
2


SQL COUNT (*) Contoh

Jika kita menghilangkan klausa WHERE, seperti ini :

SELECT COUNT(*) AS NumberOfOrders FROM Orders

Hasilnya akan terlihat seperti ini :

NumberOfOrders
6
yang merupakan jumlah baris dalam tabel.


SQL COUNT (DISTINCT nama_kolom) Contoh

Sekarang kita ingin menghitung jumlah pelanggan yang unik dalam tabel "Orders".

saya menggunakan pernyataan SQL berikut :

SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

Hasilnya akan terlihat seperti ini :

NumberOfCustomers
3

yang merupakan jumlah pelanggan yang unik (Hansen, Nilsen, dan Jensen) dalam tabel "Orders".

  •  SQL FIRST ()
 fungsi mengembalikan nilai pertama dari kolom yang dipilih.

SQL FIRST () Sintaks

SELECT FIRST(column_name) FROM table_name


SQL FIRST () Contoh

Saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari nilai pertama dari kolom "OrderPrice".

Saya menggunakan pernyataan SQL berikut :

SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders
Tip : Solusi jika FIRST () fungsi tidak didukung :

SELECT OrderPrice FROM Orders ORDER BY O_Id LIMIT 1

Hasilnya akan terlihat seperti ini :

FirstOrderPrice
1.000

  • SQL LAST ()
SQL Last () mengembalikan nilai terakhir dari kolom yang dipilih.

SQL LAST () Sintaks

SELECT LAST(column_name) FROM table_name


SQL TERAKHIR () Contoh

Saya memiliki berikut "Perintah" tabel :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari nilai terakhir dari kolom "OrderPrice".

Saya menggunakan pernyataan SQL berikut :

SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders
Tip : Solusi jika fungsi LAST () tidak didukung :

SELECT OrderPrice FROM Orders ORDER BY O_Id DESC LIMIT 1
Hasilnya akan terlihat seperti ini :

LastOrderPrice
100

  • SQL MAX ()
MAX () fungsi mengembalikan nilai terbesar dari kolom yang dipilih.

SQL MAX () Sintaks

SELECT MAX(column_name) FROM table_name


SQL MAX () Contoh

saya memiliki berikut "Perintah" tabel :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari nilai terbesar dari kolom "OrderPrice".

saya menggunakan pernyataan SQL berikut :

SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders

Hasilnya akan terlihat seperti ini :

LargestOrderPrice
2.000


  • SQL MIN ()





Fungsi mengembalikan nilai terkecil dari kolom yang dipilih.

SQL MIN () Sintaks

SELECT MIN(column_name) FROM table_name


SQL MIN () Contoh

Saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari nilai terkecil dari kolom "OrderPrice".

Saya menggunakan pernyataan SQL berikut :

SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders

Hasilnya akan terlihat seperti ini :

SmallestOrderPrice
100



  • SQL SUM ()
SUM () mengembalikan fungsi jumlah total dari kolom numerik.

SQL SUM () Sintaks

SELECT SUM(column_name) FROM table_name


SQL SUM () Contoh

Saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari jumlah dari semua bidang "OrderPrice" ".

Kami menggunakan pernyataan SQL berikut :

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

Hasilnya akan terlihat seperti ini :

OrderTotal
5700

  • SQL GROUP BY
Fungsi agregat seringkali membutuhkan tambahan GROUP BY.

GROUP BY Pernyataan

GROUP BY digunakan dalam hubungannya dengan fungsi agregat untuk mengelompokkan hasilnya oleh satu atau lebih kolom.

SQL GROUP BY Sintaks

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name


SQL GROUP BY Contoh

Saya memiliki berikut "Perintah" tabel :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin mencari total jumlah (total order) dari setiap pelanggan.

Saya akan harus menggunakan GROUP BY untuk mengelompokkan pelanggan.
Saya menggunakan pernyataan SQL berikut :

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer

Hasilnya akan terlihat seperti ini :

PelangganSUM (OrderPrice)
Hansen2.000
Nilsen1.700
Jensen2.000

Mari kita lihat apa yang terjadi jika kita menghilangkan GROUP BY :

SELECT Customer,SUM(OrderPrice) FROM Orders

Hasilnya akan terlihat seperti ini :

PelangganSUM (OrderPrice)
Hansen5700
Nilsen5700
Hansen5700
Hansen5700
Jensen5700
Nilsen5700
Hasilnya di atas tidak apa yang kita inginkan.

Penjelasan mengapa pernyataan SELECT di atas tidak dapat digunakan : Pernyataan SELECT di atas memiliki dua kolom yang ditentukan (Pelanggan dan SUM (OrderPrice), "SUM (OrderPrice)" mengembalikan nilai tunggal (yang merupakan jumlah total dari kolom "OrderPrice". ), sedangkan "Pelanggan" mengembalikan nilai 6 (satu nilai untuk setiap baris dalam tabel "Orders") karena itu akan tidak memberi kita hasil yang benar. Namun, Anda telah melihat bahwa GROUP BY memecahkan masalah ini.


GROUP BY Lebih dari Satu Kolom

Saya juga dapat menggunakan GROUP BY pernyataan di lebih dari satu kolom, seperti ini :

SELECT Customer,OrderDate,SUM(OrderPrice) FROM Orders
GROUP BY Customer,OrderDate

  • SQL HAVING

Klausul HAVING

Klausa HAVING telah ditambahkan ke SQL karena kata kunci WHERE tidak bisa digunakan dengan fungsi agregat.

SQL HAVING Sintaks

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value


SQL HAVING Contoh

Saya memiliki berikut tabel "Perintah" :

O_IdOrderDateOrderPricePelanggan
12008/11/121.000Hansen
22008/10/231.600Nilsen
32008/09/02700Hansen
42008/09/03300Hansen
52008/08/302.000Jensen
62008/10/04100Nilsen
Sekarang kita ingin menemukan jika salah satu pelanggan memiliki total order kurang dari 2000.

Saya menggunakan pernyataan SQL berikut :

SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000

Hasilnya akan terlihat seperti ini :

PelangganSUM (OrderPrice)
Nilsen1.700
Sekarang kita ingin mencari jika pelanggan "Hansen" atau "Jensen" memiliki urutan total lebih dari 1500.

Saya menambahkan klausa WHERE biasa untuk pernyataan SQL :

SELECT Customer,SUM(OrderPrice) FROM Orders
WHERE Customer='Hansen' OR Customer='Jensen'
GROUP BY Customer
HAVING SUM(OrderPrice)>1500

Hasilnya akan terlihat seperti ini :

PelangganSUM (OrderPrice)
Hansen2.000
Jensen2.000

  • SQL UCASE ()
Berfungsi untuk mengkonversi nilai dari bidang menjadi huruf besar.

SQL UCASE () Sintaks

SELECT UCASE(column_name) FROM table_name

Sintaks untuk SQL Server

SELECT UPPER(column_name) FROM table_name


SQL UCASE () Contoh

Saya memiliki berikut tabel "Orang" :

P_IdLastNameFirstNameAlamatKota
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Sekarang kita ingin memilih isi kolom "LastName" dan "FirstName" di atas, dan mengubah "LastName" kolom ke huruf besar.

Saya menggunakan pernyataan SELECT berikut :

SELECT UCASE(LastName) as LastName,FirstName FROM Persons

Hasilnya akan terlihat seperti ini :

LastNameFirstName
HANSENOla
SVENDSONTove
PETTERSENKari

  • SQL LCASE ()
Berfungsi untuk mengkonversi nilai dari bidang menjadi huruf kecil.

SQL lcase () Sintaks

SELECT LCASE(column_name) FROM table_name

Sintaks untuk SQL Server

SELECT LOWER(column_name) FROM table_name


SQL lcase () Contoh

Saya memiliki berikut tabel "Orang" :

P_IdLastNameFirstNameAlamatKota
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Sekarang kita ingin memilih isi kolom "LastName" dan "FirstName" di atas, dan mengubah "LastName" kolom menjadi huruf kecil.

Saya menggunakan pernyataan SELECT berikut :

SELECT LCASE(LastName) as LastName,FirstName FROM Persons

Hasilnya akan terlihat seperti ini :

LastNameFirstName
hansenOla
svendsonTove
PettersenKari

  • SQL MID ()
Berfungsi digunakan untuk mengekstrak karakter dari kolom teks.

SQL MID () Sintaks

SELECT MID(column_name,start[,length]) FROM table_name

ParameterDeskripsi
nama_kolomDiperlukan. Lapangan untuk mengekstrak karakter dari
mulaiDiperlukan. Menentukan posisi awal (dimulai pada 1)
panjangnyaOpsional. Jumlah karakter untuk kembali. Jika dihilangkan, MID () fungsi mengembalikan sisa teks


SQL MID () Contoh

Saya memiliki berikut tabel "Orang" :

P_IdLastNameFirstNameAlamatKota
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Sekarang kita ingin mengekstrak empat karakter pertama dari kolom "Kota" di atas.

Saya menggunakan pernyataan SELECT berikut :

SELECT MID(City,1,4) as SmallCity FROM Persons

Hasilnya akan terlihat seperti ini :

SmallCity
Pasir
Pasir
Stav

  • SQL LEN ()
Berfungsi untuk mengembalikan panjang dari nilai dalam kolom teks.

SQL LEN () Sintaks

SELECT LEN(column_name) FROM table_name


SQL LEN () Contoh

Saya memiliki berikut tabel "Orang" :

P_IdLastNameFirstNameAlamatKota
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger
Sekarang kita ingin memilih panjang nilai-nilai di kolom "Alamat" di atas.

Saya menggunakan pernyataan SELECT berikut :

SELECT LEN(Address) as LengthOfAddress FROM Persons

Hasilnya akan terlihat seperti ini :

LengthOfAddress
12
9
9

  • SQL ROUND ()
Digunakan untuk membulatkan bidang angka dengan jumlah desimal yang ditentukan.

SQL ROUND () Sintaks

SELECT ROUND(column_name,decimals) FROM table_name

ParameterDeskripsi
nama_kolomDiperlukan. Lapangan untuk putaran.
desimalDiperlukan. Menentukan jumlah desimal yang akan dikembalikan.


SQL ROUND () Contoh

Saya memiliki berikut tabel "Produk" tabel :

Prod_IdProductNameSatuanUnitPrice
1Jarlsberg1000 g10.45
2Mascarpone1000 g32.56
3Gorgonzola1000 g15.67
Sekarang kita ingin menampilkan nama produk dan harga dibulatkan ke bilangan bulat terdekat.

Saya menggunakan pernyataan SELECT berikut :

SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products

Hasilnya akan terlihat seperti ini :

ProductNameUnitPrice
Jarlsberg10
Mascarpone33
Gorgonzola16


  • SQL NOW ()
mengembalikan fungsi tanggal dan waktu sistem saat.

SQL NOW () Sintaks

SELECT NOW() FROM table_name


SQL NOW () Contoh

Saya memiliki berikut tabel "Produk" :

Prod_IdProductNameSatuanUnitPrice
1Jarlsberg1000 g10.45
2Mascarpone1000 g32.56
3Gorgonzola1000 g15.67
Sekarang kita ingin menampilkan produk dan harga per tanggal hari ini.

Saya menggunakan pernyataan SELECT berikut :

SELECT ProductName, UnitPrice, Now() as PerDate FROM Products

Hasilnya akan terlihat seperti ini :

ProductNameUnitPricePerDate
Jarlsberg10.452008/10/07 11:25:02
Mascarpone32.562008/10/07 11:25:02
Gorgonzola15.672008/10/07 11:25:02


  • SQL FORMAT ()
digunakan untuk memformat bagaimana yang akan ditampilkan.

SQL FORMAT () Sintaks

SELECT FORMAT(column_name,format) FROM table_name

ParameterDeskripsi
nama_kolomDiperlukan. Lahan yang akan diformat.
formatDiperlukan. Menentukan format.


SQL FORMAT () Contoh

Saya memiliki berikut "Produk" tabel :

Prod_IdProductNameSatuanUnitPrice
1Jarlsberg1000 g10.45
2Mascarpone1000 g32.56
3Gorgonzola1000 g15.67
Sekarang kita ingin menampilkan produk dan harga per tanggal hari ini (dengan tanggal hari ini ditampilkan dalam format berikut "YYYY-MM-DD").

Saya menggunakan pernyataan SELECT berikut :

SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate
FROM Products

Hasilnya akan terlihat seperti ini :

ProductNameUnitPricePerDate
Jarlsberg10.452008-10-07
Mascarpone32.562008-10-07
Gorgonzola15.672008-10-07