Oleh: Rony Syahputra Nasution | Februari 29, 2012

Antara SQL, Chart dan Lintas Tahun

Antara SQL, Chart dan Data Lintas Tahun

Nyaris sudah lama,
tak menghadapi masalah ketika coding,
Mungkin karena waktu lebih banyak tersita,
untuk mengelola dan analisa data dengan melakukan query SQL,
walaupun tetap dituntut menghasilkan sesuatu dengan coding

Tapi melakukan SQL termasuk coding ga ya..
whatever i’m happy and enjoy hehe ^_^

Balik ke awal,
memang dah lama tak menghadapi masalah ketika coding,
bukan karena kesempatan waktu yang sempit,
sehingga meminimalkan terjadinya masalah,
tapi memang case yang dihadapi nyaris sudah pernah dilalui,
alias sudah experience (gaya..hehe)

Masalahnya apa ?

ceritanya lagi buat laporan dalam bentuk chart,
dimana data yang diambil berasal dari data harian (tiap hari),
dan ditampilkan dengan dikelompokkan dalam tiap bulan,
Januari, Februari, dan seterusnya.

Awalnya,
data disajikan dalam 1 tahun dan fix per tahun,
misalnya 2011 dari Januari hingga Desember.

Hal ini tidak masalah,
antara lain dengan menggunakan kombinasi,
WHERE field_ref BETWEEN waktu_awal AND waktu_akhir
yang dilengkapi dengan GROUP BY MONTH(field_ref)
pada SQL.

Atau lebih ektrim,
di proses di sisi Script,
dengan pembuatan array untuk masing-masing bulan,
array untuk Januari, Februari…hingga Desember.

Masalah muncul ketika,
client meminta untuk dapat dilakukan lintas tahun (beda tahun),
misalnya dari Februari 2011 hingga Februari 2012.

“Ah mudah lah itu”,
kata-kata yang sekilas terbesit dalam hati kecil ^_^
entah karena panik atau dikejar waktu untuk pekerjaan lain,
malah pusing sendiri.

Menggunakan cara ekstrim pada sisi script,
seperti tidak mungkin, tidak efektif lebih tepatnya,
kebayang, mesti membuat array untuk masing-masing bulan,
1 tahun = 12 array, 2 tahun = 24 array, dan seterusnya

Atau jika “dipaksakan”,
bisa digunakan konsep looping,
tapi sekali lagi intinya tidak efektif menurut saya ^_^

Memang, solusi mudahnya,
melakukan processing pada sisi SQL,
WHERE field_ref BETWEEN waktu_awal AND waktu_akhir
yang dilengkapi dengan GROUP BY MONTH(field_ref).

Hasilnya ditampilkan,
oleh program aplikasi ketika di running,
akan tetapi jika diperhatikan, terdapat kesalahan,
bulan dengan nama yang sama dari beda tahun,
nilainya disatukan (dalam kasus ini Februari).

Error yang paling ditakutkan,
Error logika, menampilkan result yang salah,
tanpa memberikan error message.

 

 

Akhirnya setelah otak-atik sana sini,
solusi ditemukan,
dengan tetap memanfaatkan SQL,
yaitu dengan modifikasi di bagian GROUP BY.

GROUP BY MONTH(field_ref) diganti menjadi
GROUP BY DATE_FORMAT(field_ref, ‘%Y%M%’)
sehingga WHERE field_ref BETWEEN waktu_awal AND waktu_akhir,
yang dikombinasikan GROUP BY DATE_FORMAT(field_ref, ‘%Y%M%’).

 

 

Ternyata memang simple,
berarti benar dong kata hati kecil saya,
“Ah mudah lah itu”,
mungkin cuma panik dan dikejar waktu untuk pekerjaan lain,
tapi katanya sudah experience,
hehe jadi malu ^_^

Semoga bermanfaat.

Salam dari Kawasan Senayan,
Rony Syahputra Nasution.


Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Kategori

%d blogger menyukai ini: