Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
Query Menjumlahkan Nilai Berdasarkan tahun sebelumnya dan tahun sekarang
Permisi master..
Mohon pencerahan.
Saya menemui masalah,
Saya ada tabel,
-----------------------------------------------
id_wakt id_prodi jumlah_mahasiswa
-----------------------------------------------
2012 1 582
2012 2 290
2012 3 762
2013 1 447
2013 2 298
2013 3 666
2014 1 521
2014 2 310
2014 3 678
----------------------------------------------
Pertanyaannya :
Misal :
-Tahun 2012, total mahasiswa pada masing2 prodi adalah tetap, karena tidak ada tahun sebelumnya.
-Tahun 2013, total mahasiswa pada masing2 prodi adalah prodi 1, totalnya (582 + 447)=1029 --> 582 dari tahun 2012, dan 447 dari tahun 2013
-Tahun 2014, total mhs = 582 + 447 + 521 = 1550
Bagaimana QUERY untuk menjumlahkan (sum) nilai jumlah_mahasiswa (sebagai total_mhs) berdasarkan id_waktu dan id_prodi ?
Terima kasih dan mohon pencerahan
Comments
gw kok ngerasa ngadepin soal kuliah yah ...
lagian juga soal dasar yg sederhana ...
cuma SELECT, WHERE, GROUP BY, SUM.
berhubung di forum ini sejak jaman kuda gigit batu ... DILARANG KERAS ngerjain soal / tugas / pe-er kuliah member lain ... atau moderator akan bertindak
karena itu sangat tidak mendidik, dan malah menjerumuskan bikin orang jadi males, cuma terima disuapin.
jadi coba dibuat dulu query nya berdasar perintah yg sudah gw tunjukin.
kalo masih salah hasilnya, silakan tanyakan lagi.
dengan begitu, minimal sudah menunjukkan elo sudah berusaha, tapi salah ...
bukan pe-er minta dikerjakan
sekian.
Hehehehe
Tapi ini bukan soal kuliah.
Saya juga sudah mencoba tetapi hasil total masih sama seperti hasil jum_mhs
SELECT id_prodi, id_waktu, sum(jum_mahasiswa) as tot_mhs FROM `mhs` group by id_prodi, id_waktu
Jika di beri 'where' diisi apa ya ?
Karena ini menampilkan secara bersamaan semua data di tabel.
Terima kasih dan maaf..
posting kemari
lalu hasil yg bener yg elo harapin spt apa ?
posting kemari
ini link hasil yg aku jalanin :
https://photos.google.com/photo/AF1QipPsz1pyoVOQPNJG15VyjnOi_TQBLbfg9WbXXZEQ
id_prodi______id_waktu_________jum_mhs_______tot_mhs
-------------------------------------------------
1 2012 582 582
1 2013 447 447
1 2014 521 521
seperti itu sekilas hasilnya
maksud yg diharapkan itu :
id_prodi______id_waktu_________jum_mhs_______tot_mhs
-------------------------------------------------
1 2012 582 582
1 2013 447 1029
1 2014 521 1550
ada sedikit berubah di menu postimage nya ... tapi masih bisa dipake
ada perubahan juga attachment di posting ... tapi masih bisa diikuti juga
ini hasil yg tadi
biasanya dihitung di aplikasi,
lebih efisien dibanding pake variabel di query.
soalnya query nya jadi panjang dan lebih susah di debug
jadi ... putuskan dulu ...
mau diterusin diproses di database via quey ?
atau pindah ada di aplikasi ?
Tetapi kalo di aplikasi jadinya bagaimana mas ?
Dan Aplikasi apa yg dimaksud ?
aplikasi ini kalo datawarehouse ya aplikasi dashboardnya.
elo bikin sendiri ? atau pake yg sudah jadi ?
lalu kalo datawarehouse pun ...
hasil perhitungan elo itu akan elo jadikan tabel fisik ?
query perhitungan tsb hanya dijalankan berkala by schedule ?
lalu jika butuh hasilnya, diambil dari tabel fisik yg sudah jadi ?
... kalo iya ... niat elo bener.
tapi kalo perhitungan itu selalu dijalankan tiap kali butuh data tersebut
... kalo iya ... niat elo salah.
cuma jadi ndak wajar kalo di datawarehouse, query itu dijalankan berulang tiap kali butuh datanya.
tapi kalo elo gabung dengan :
CREATE TABLE materialized_sum
SELECT ...
atau jika table materialized_sum sudah ada ...
INSERT INTO materialized_sum ( ... )
SELECT ...
baru wajar ...
"
lalu kalo datawarehouse pun ...
hasil perhitungan elo itu akan elo jadikan tabel fisik ?
query perhitungan tsb hanya dijalankan berkala by schedule ?
lalu jika butuh hasilnya, diambil dari tabel fisik yg sudah jadi ?
"
Sebenarnya proses query tersebut saya butuhkan saat proses ETL dari data transaksional menjadi data analisis di datawarehouse itu.
Proses ETL nya saya menggunakan Pentaho Data Integration. Aku akan coba terapkan ini di proses ETL nya/
Terimakasih banyak, master
Masih seputar hal diatas
saya ada tabel seperti ini
Lalu saya tampilkan seperti yg saya harapkan seperti di atas
SELECT mhsNamaAngkatan , mhsProdiKode , COUNT(IF(mhsJlrrKode NOT IN ('SAJ','SAP'),mhsNiu , NULL)) AS 'JUM_MB_REG' , COUNT(IF(mhsJlrrKode IN ('SAJ','SAP'), mhsNiu, NULL)) AS 'JUM_MB_TRANS' FROM mahasiswa group by mhsNamaAngkatan, mhsProdiKode
Hasilnya :
Lalu jika ditambah kolom TOTAL_MHS_REG dengan kode seperti dari masnya tadi :
SELECT
id_prodi ,
id_waktu ,
jum_mahasiswa ,
IF( id_prodi = 1 , @a := @a + jum_mahasiswa ,
IF( id_prodi = 2 , @b := @b + jum_mahasiswa ,
@c := @c + jum_mahasiswa )
) AS tot_mahasiswa
FROM `mhs`
JOIN ( SELECT @a := 0 , @b := 0 , @c := 0 ) inisialisasi
ORDER BY id_prodi , id_waktu
Bagaimana ya mas menggabungkannya ?
SELECT
mhsProdiKode, mhsNamaAngkatan
, COUNT(IF(mhsJlrrKode NOT IN ('SAJ','SAP'),mhsNiu , NULL)) AS 'JUM_MB_REG'
, COUNT(IF(mhsJlrrKode IN ('SAJ','SAP'), mhsNiu, NULL)) AS 'JUM_MB_TRANS'
, IF( mhsProdiKode = 1 , @a := @a + JUM_MB_REG , IF( mhsProdiKode = 2 , @b := @b + JUM_MB_REG , @c := @c + JUM_MB_REG ) ) AS TOT_MHS_REG
FROM mahasiswa JOIN ( SELECT @a := 0 , @b := 0 , @c := 0 ) inisialisasi group by mhsProdiKode, mhsNamaAngkatan
cara agar inisialisasi nama 'AS JUM_MB_REG' terbaca di query IF nya itu bagaimana ya?
elo pake alias saat itu juga ...
@jum_mb_reg := COUNT(IF(mhsJlrrKode NOT IN ('SAJ','SAP'),mhsNiu , NULL)) AS 'JUM_MB_REG'
yah ... elo tau to kira-kira @jum_mb_reg mesti diapain ?
Apa jika di IF pemanggilannya menjadi seperti ini ?? :
IF( mhsProdiKode = 1 , @a := @a + @jum_mb_reg , IF( mhsProdiKode = 2 , @b := @b + @jum_mb_reg , @c := @c + @jum_mb_reg ) ) AS TOT_MHS_REG
@ itu kan tanda kalo itu variabel di mysql.
@jum_mb_reg itu variabel yg menampung hasil count.
emang hasilnya salah ?
Hasilnya NULL
Hasil TOT_MHS_REG jadi NULL
ya ndak ada cara lain : subquery.
kok kayanya ndak mungkin
itu ada "titik dua"-nya lho ... semacam itu ?
Oke, terima kasih banyak
Jika saya memakai CREATE TABLE materialized_sum..
Kemudian select yang dituliskan bagaiamana ?
bukan CREATE sendiri, lalu SELECT sendiri.
beneran nyambung.
jadi hasil SELECT langsung dibuatkan table baru dan semua isinya dimasukan ke table baru tersebut.
perintah ya kaya yg gw tulis ...
buat dulu query SELECT sampai beneran dapat hasil yang dimau.
kalo sudah yakin, tinggal awalnya di tambah :
CREATE TABLE materialized_sum SELECT ...
nama table baru : terserah, sesuai kebutuhan.
tipe field tidak perlu disebut, biasanya langsung auto-detect.
tapi kalo mau disebut juga boleh.
dokumentasi : https://dev.mysql.com/doc/refman/5.7/en/create-table-select.html