Wednesday, August 14, 2013

Sharing Everything From My Experience And Knowlegde

Sharing Everything From My Experience And Knowlegde


T-SQL : Belajar SQL Query GROUPING (Group By) dan HAVING Dengan Mudah

Posted: 13 Aug 2013 11:51 PM PDT

Grouping pada sql adalah untuk mengelompokan data, agar data yang sama tampil manjadi satu baris saja (tidak duplikat). Hal ini hampir sama dengan dengan DISTINCT, tetapi bedanya adalah Grouping bisa kita gunakan juga untuk fungsi SUM, AVG, MAX, MIN, COUNT, dan memang fungsi fungsi tersebut harus di-run dengan Grouping. OK, Langsung saja ke contoh : saya mempunyai data seperti dibawah ini :
1.Jika kita ingin mengetahui kode_group apa saja yang ada di table barang :
SELECT KODE_GROUP FROM BARANG GROUP BY KODE_GROUP
KODE_GROUP

G001
G002
G003

ini sebenarnya sama dengan :
SELECT DISTINCT KODE_GROUP FROM BARANG 

2. Jika kita ingin mengetahui berapa jumlah stock yang dipasok supplier :
SELECT KODE_SUPPLIER, SUM(STOCK) AS JUMLAH_STOCK FROM BARANG 
GROUP BY KODE_SUPPLIER 
KODE_SUPPLIER    JUMLAH_STOCK
                                     40
S001                             30
S002                             55


3.Jika kita ingin mengetahui berapa harga tertinggi yang di pasok oleh supplier :
SELECT  KODE_SUPPLIER, MAX(HARGA) AS HARGA_TERTINGGI FROM BARANG
GROUP BY KODE_SUPPLIER
KODE_SUPPLIER    HARGA_TERTINGGI
                                     25000
S001                             60000
S002                             30000 


4.Jika kita ingin mengetahui berapa jumlah barang yang di pasok oleh supplier :
SELECT  KODE_SUPPLIER, COUNT( KODE_BARANG) AS JUMLAH_BARANG FROM BARANG 
GROUP BY KODE_SUPPLIER
KODE_SUPPLIER    JUMLAH_BARANG
                                      1
S001                              2
S002                              2 


Lihatlah, yang saya warnai merah, intinya setiap kolom/field yang kita select HARUS ada/disebutkan juga setelah GROUP BY

HAVING adalah penggantinya WHERE dalam GROUPING, tapi kita juga masih bisa gunakan where dalam grouping. Having digunakan jika field yang kita select sebagai grouping akan dijadikan kriteria (ada kriteria-nya), kita ambil contoh diatas nomor 3 : 
Ambil data harga tertinggi dari supplier S001
SELECT  KODE_SUPPLIER, MAX(HARGA) AS HARGA_TERTINGGI FROM BARANG 
GROUP BY KODE_SUPPLIER  
HAVING KODE_SUPPLIER='S001'
KODE_SUPPLIER    HARGA_TERTINGGI
S001                             60000



Sedangkan WHERE adalah kebalikan dari HAVING, yaitu digunakan jika ada kriteria yang field-nya tidak disebutkan dalam Select Grouping, contoh :
Ambil data harga tertinggi dari supplier yang tidak blank dimana kode barangnya B005

SELECT  KODE_SUPPLIER, MAX(HARGA) AS HARGA_TERTINGGI FROM BARANG 
WHERE KODE_BARANG = 'B005'
GROUP BY KODE_SUPPLIER 
HAVING KODE_SUPPLIER<>''
KODE_SUPPLIER    HARGA_TERTINGGI
S002                             30000


Tags:
cara group by, sql statement group by, contoh t-sql sum, contoh t-sql avg, contoh t-sql min, contoh t-sql max, contoh t-sql count,perbedaan having dan where pada sql query

No comments:

Post a Comment