Mysql Tutorial: Menampilkan data dalam seminggu
Oleh: Admin - Fri, 03 May, 2019
Weekly Data Query
Hellooo soobbb... lagi asik belajar query mysql nih sob, ehh dapet case gini.
Jadi gw disuruh nampilin data per-minggu (weekly) tapi namanya juga masih awam yaah :D jadi muter-muter deh nih kepala hahahaa.
Case -nya gini sob, data yang mau ditampilin itu 1 minggu (senin - minggu), misal hari senin itu tanggal 1 dan hari minggunya berati tanggal 7, terus gw mau nampilin tanggal itu secara berurutan (senin - minggu) tadi dengan patokan tanggal hari ini (current date) server mysql -nya.
Alhasil terbentuklah query dibawah, dan you know sob ternyata dari query yang gw bikin ini udah ada dong versi bawaan mysql -nya hahahaaa (bisa lihat query berikutnya sob):
SELECT COUNT(*) total, DATE(r.created_at) tanggal, DATE_FORMAT(r.created_at, '%a') hari FROM tbl_request r WHERE DATE(r.created_at) BETWEEN DATE( NOW() + INTERVAL ( CASE WHEN DAYOFWEEK(NOW()) = 1 THEN 1 -- sunday WHEN DAYOFWEEK(NOW()) = 2 THEN 0 -- monday WHEN DAYOFWEEK(NOW()) = 3 THEN -1 -- tuesday WHEN DAYOFWEEK(NOW()) = 4 THEN -2 -- wednesday WHEN DAYOFWEEK(NOW()) = 5 THEN -3 -- thursday WHEN DAYOFWEEK(NOW()) = 6 THEN -4 -- friday ELSE -5 -- saturday END ) DAY ) AND DATE( NOW() - INTERVAL ( CASE WHEN DAYOFWEEK(NOW()) = 1 THEN 0 -- sunday WHEN DAYOFWEEK(NOW()) = 2 THEN -6 -- monday WHEN DAYOFWEEK(NOW()) = 3 THEN -5 -- tuesday WHEN DAYOFWEEK(NOW()) = 4 THEN -4 -- wednesday WHEN DAYOFWEEK(NOW()) = 5 THEN -3 -- thursday WHEN DAYOFWEEK(NOW()) = 6 THEN -2 -- friday ELSE -1 -- saturday END ) DAY ) GROUP BY DATE(r.created_at) ORDER BY DATE(r.created_at) ASC
Nah query dibawah ini versi bawaan mysql -nya sob, bisa dibandingin ya lebih ringkes hahahhaaa.
Gw udah pusing mikirin logika case diatas tadi, ternyata udah disediain sama mysql fungsi praktisnya. Tapi ya alhamdulillah nambah ilmu lagi dan case tadi pun solve dengan cara gw sendiri :D .
SELECT COUNT(*) total, DATE(r.created_at) tanggal, DATE_FORMAT(r.created_at, '%a') hari FROM tbl_request r WHERE YEARWEEK(r.created_at, 1) = YEARWEEK(NOW(), 1) GROUP BY DATE(r.created_at) ORDER BY DATE(r.created_at) ASC
Oke sob, sekian tutorial hari ini.
Sampai jumpa lain waktu, terus belajar, rajin-rajin mantengin web gw ini hahahhaaa.
Semoga bermanfaat buat kita semua, wassalam.