Menggunakan Fungsi SUM IF Untuk Menjumlahkan Nilai Pada Field (Kolom) Suatu Tabel Pada MySQL

Pada kesempatan kali ini kita akan membahas cara menjumlahkan nilai pada field tertentu dengan kondisi tertentu menggunakan fungsi SUM dan IF.

Fungsi SUM digunakan untuk menjumlahkan nilai pada row yang ada pada suatu kolom, sedangkan fungsi IF digunakan untuk menguji nilai pada row tersebut (berdasarkan  satu kondisi tertentu) sehingga diperoleh nilai yang akan digunakan dalam proses penjumlahan.

Persiapan Data

Pada tutorial ini, kita akan menggunakan tiga tabel. Untuk memudahkan, kita akan membuat tiga tabel sederhana yaitu tabel penjualan, pelanggan, dan produk.  Skema tabel dan hubungan (relasi) antar tabel tampak seperti gambar berikut:

Menggunakan Fungsi SUM IF pada MySQL - Diagram ERD

File SQL diatas dapat digunakan untuk membuat semua tabel yang diperlukan beserta contoh datanya.

Pada tutorial ini, kita akan mengolah data pada tabel penjualan, agar lebih mudah dipahami, berikut ini penjelasan field pada tabel penjualan:

  • id_transaksi merupakan nilai unik dari tabel penjualan. Field ini merupakan primary key untuk tabel penjualan.
  • id_pelanggan merupakan merupakan nomor id dari pelanggan. Field ini merupakan foreign key dari field id_pelanggan yang ada pada tabel pelanggan
  • id_produk merupakan nomor id untuk produk. Field ini merupakan foreign key dari field id_produk yang ada pada tabel produk.
  • tgl_byr merupakan tanggal pembayaran dengan format yyyy-mm-dd.
  • jml_byr  merupakan jumlah pembayaran.

Adapun isi dari tabel penjualan seperti tampak pada tabel berikut:

+--------------+--------------+-----------+------------+---------+
| id_transaksi | id_pelanggan | id_produk | tgl_byr    | jml_byr |
+--------------+--------------+-----------+------------+---------+
|            1 |            1 | 111       | 2016-02-02 | 1500000 |
|            2 |            1 | 112       | 2016-03-10 | 1250000 |
|            3 |            1 | 113       | 2016-04-10 |  750000 |
|            4 |            2 | 112       | 2015-02-02 |  500000 |
|            5 |            2 | 112       | 2015-03-10 | 3500000 |
|            6 |            2 | 113       | 2016-04-10 | 1500000 |
|            7 |            3 | 115       | 2016-02-02 | 1550000 |
|            8 |            3 | 115       | 2015-03-10 | 2730000 |
|            9 |            3 | 111       | 2016-04-10 | 4949000 |
|           10 |            1 | 115       | 2015-02-02 | 2450000 |
|           11 |            1 | 111       | 2016-03-10 | 1725000 |
|           12 |            4 | 111       | 2015-04-10 |  775000 |
|           13 |            4 | 115       | 2016-04-10 | 2900000 |
+--------------+--------------+-----------+------------+---------+

Sedangkan untuk tabel pelanggan, data yang akan kita gunakan adalah sebagai berikut:

+--------------+---------+-----------+---------+
| id_pelanggan | nama    | alamat    | id_staf |
+--------------+---------+-----------+---------+
|            1 | Alfa    | Jakarta   |       1 |
|            2 | Beta    | Semarang  |       1 |
|            3 | Charlie | Surabaya  |       2 |
|            4 | Delta   | Surakarta |       3 |
+--------------+---------+-----------+---------+

Penggunaan Fungsi SUM IF

Selanjutnya, mari kita gunakan fungsi SUM dan IF untuk melakukan penjumlahan semua penjualan berdasarkan tahun, query yang kita gunakan adalah:

SELECT  SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
        SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015
FROM penjualan

Hasil yang kita peroleh:

+----------+----------+
| jml_2016 | jml_2015 |
+----------+----------+
| 16124000 |  9955000 |
+----------+----------+

Pada query diatas, MySQL akan melakukan pengecekan pada tiap-tiap row satu per satu. MySQL akan menjalankan fungsi YEAR untuk mendapatkan tahun dari data tanggal ada pada kolom tgl_byr, selanjutnya jika:

  • Hasil fungsi YEAR adalah 2016, maka, ambil nilai pada kolom jml_byr  untuk disertakan dalam proses penjumlahan, jika tidak, gunakan nilai nol ( 0 ).
  • Proses diatas berlaku juga untuk tahun 2015.
Penting diperhatikan bahwa antara SUM dengan tanda kurung buka  tidak boleh ada spasi seperti: SUM ( jika tidak, maka akan muncul pesan error:  SQL Error (1630): FUNCTION tutorial_sum_if.SUM does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

Selanjutnya, jika kita ingin mengetahui jumlah pembelian per pelanggan per tahun, maka kita dapat mengelompokkan data berdasarkan kolom id_pelanggan, query yang kita gunakan:

SELECT  id_pelanggan,
        SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
        SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
        SUM(jml_byr) AS TOTAL
FROM penjualan
GROUP BY id_pelanggan

Hasil yang kita dapatkan:

+--------------+----------+----------+---------+
| id_pelanggan | jml_2016 | jml_2015 | TOTAL   |
+--------------+----------+----------+---------+
|            1 |  5225000 |  2450000 | 7675000 |
|            2 |  1500000 |  4000000 | 5500000 |
|            3 |  6499000 |  2730000 | 9229000 |
|            4 |  2900000 |   775000 | 3675000 |
+--------------+----------+----------+---------+

Terakhir, mari kita tampilkan informasi nama pelanggan dengan cara menggabungkan tabel penjualan dan tabel pelanggan. Adapun query yang kita perlukan:

SELECT  id_pelanggan,
	nama,
        SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
        SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
        SUM(jml_byr) AS TOTAL
FROM penjualan
LEFT JOIN pelanggan USING(id_pelanggan)
GROUP BY id_pelanggan

Hasil yang kita peroleh:

+--------------+---------+----------+----------+---------+
| id_pelanggan | nama    | jml_2016 | jml_2015 | TOTAL   |
+--------------+---------+----------+----------+---------+
|            1 | Alfa    |  5225000 |  2450000 | 7675000 |
|            2 | Beta    |  1500000 |  4000000 | 5500000 |
|            3 | Charlie |  6499000 |  2730000 | 9229000 |
|            4 | Delta   |  2900000 |   775000 | 3675000 |
+--------------+---------+----------+----------+---------+
Fungsi IF hanya dapat digunakan untuk melakukan pengujian satu kondisi sehingga jika kita ingin menjumlahkan kolom dengan beberapa kondisi, kita tidak bisa menggunakan fungsi IF, melainkan menggunakan CASE.

Jika kita ingin menghitung jumlah baris, misal untuk menghitung jumlah transaksi per pelanggan, kita dapat menggunaan fungsi COUNT. Pembahasan fungsi tersebut dapat diikuti pada tutorial:  Menghitung Field (Kolom) Pada Tabel MySQL Dengan Kondisi Tertentu Menggunakan COUNT IF

UPDATE

Mas  awy  dalam feedbacknya ingin membuat grand total dari total yang ada, saya rasa perlu untuk saya tambahkan pada artikel ini sehingga dapat lebih informatif.

Terdapat beberapa cara untuk membuat grand total dari total yang ada, beberapa diantaranya dibahas pada artikel:  Menghitung Total dan Subtotal Pada MySQL.

Pada contoh kali ini kita akan menghitung grand total menggunakan query tersendiri kemudian digabungkan dengan query utama menggunakan  UNION ALL, querynya adalah sebagai berikut:

SELECT  id_pelanggan,
	nama,
        SUM(IF(YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
        SUM(IF(YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
        SUM(jml_byr) AS TOTAL
FROM penjualan
LEFT JOIN pelanggan USING(id_pelanggan)
GROUP BY id_pelanggan
UNION ALL
SELECT  "" AS id_pelanggan,
	"Grand Total" as nama,
        SUM(IF(YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016,
        SUM(IF(YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015,
        SUM(jml_byr) AS TOTAL
FROM penjualan

Hasil yang kita dapatkan:

+--------------+-------------+----------+----------+----------+
| id_pelanggan | nama        | jml_2016 | jml_2015 | TOTAL    |
+--------------+-------------+----------+----------+----------+
| 1            | Alfa        |  5225000 |  2450000 |  7675000 |
| 2            | Beta        |  1500000 |  4000000 |  5500000 |
| 3            | Charlie     |  6499000 |  2730000 |  9229000 |
| 4            | Delta       |  2900000 |   775000 |  3675000 |
|              | Grand Total | 16124000 |  9955000 | 26079000 |
+--------------+-------------+----------+----------+----------+

Pada query diatas, query pertama dan kedua bentuknya mirip, hanya bedanya, pada query pertama, data kita kelompokkan (GROUP BY) berdasarkan kolom id_pelanggan sedangkan yang kedua, kita tidak melakukan pengelompokan data, MySQL otomatis akan menggabungkan semua data untuk masing masing kolom.

Demikian pembahasan mengenai cara menggunakan fungsi SUM IF untuk menjumlahkan data dengan kriteria tertentu, semoga bermanfaat.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

389 Feedback dari pembaca

      • om agus, sama, saya juga punya maksud seperti itu, bagaimana caranya hasil dari kolom total, ditotal kembali, seperti membuat grand total pada footernya.
        pada case diatas hasil grand totalnya jadi 26.079.000.
        Saya ingin membuat total dari data yang sudah tampil di table html, bukan membuat query dari database.

        thanks,

        • Terimakasih mas, feedback yang bagus.
          Untuk membuat Grand Total sudah saya sertakan pada update artikel diatas.
          Jika ingin menambahkan di HTML, mas bisa menggunakan php.
          Sebenarnya untuk membuat grand total bisa melalui php bisa juga langsung melalui query, tetapi yang paling baik adalah via query karena menganut prinsip “sekali jadi” dan akan kompatibel jika di gunakan di bahasa pemrograman lain.

  • kalaw mau seperti ini gmna :
    kode | nama | jumlah kirim
    001 | buku | 3
    001 | buku | 4
    JUMLAH | 7
    002 | Pensil| 5
    JUMLAH | 5
    003 | hp | 2
    003 | hp | 1
    JUMLAH | 3

    *di setiap nama barang yg sma di jumlah kan dan hasilnya berada tepat di bawah nama barang

    • Coba menggunakan rollup, tapi rollup mengharuskan GROUP BY, jadi harus ada yang unik antar kode dan nama. query:

      SELECT kode, IFNULL(nama, ‘JUMLAH’) AS nama, sum(jumlah) as jumlah FROM `tes` GROUP BY kode, nama WITH ROLLUP

      menghasilkan
      kode|nama|jumlah
      001|buku|3
      001|buku 2|4
      001|JUMLAH|7

      dengan asumsi row ke dua diganti buku 2

  • mas saya maw bertanya
    misalkan dalam tabel ada seperti ini

    Nama barangjumlahtgl
    sampo 3 12-06-2014
    sampo 4 13-06-2014
    sabun 3 13-06-2014

    saya ingin menjumlahkan isi dari tabel bedasarkan nama barang hingga jadi kayak gini

    Nama barangjumlah
    sampo 7
    sabun 3

    tolong pencerahannya ,,

    • Bisa dicoba menggunakan group mas
      Misal struktur tabel seperti ini:

      nama_produk | jml | tgl
      sampo | 3 | 12-06-2014
      sampo | 4 | 13-06-2014
      sabun | 3 | 13-06-2014

      Query:
      SELECT nama_produk AS “Nama Barang”, SUM(jml) AS jumlah
      FROM `produk`
      GROUP by nama_produk

      Hasil:
      Nama Barang | jumlah
      sabun | 3
      sampo | 7

      Sedikit saran, sebisa mungkin hindari penggunaan nama secara langsung, lebih baik diganti dengan id misal sabun 1, sampo 2, dan dibuat tabel referensi misal dengan nama tabel nama_produk, dengan struktur:
      id_produk | nama_produk
      1 | sabun
      2 | sampo

    • Seperti pivot tabel ya mas

      tergantung fieldnya mas, bisa pakai IF atau CASE
      kalau seperti diatas

      SELECT
      	SUM (IF(tgl_byr LIKE "201101%", jml_byr, 0)) AS jml_byr_01,
      	SUM (IF(tgl_byr LIKE "201102%", jml_byr, 0)) AS jml_byr_02,
      	SUM (IF(tgl_byr LIKE "201103%", jml_byr, 0)) AS jml_byr_03,
      	SUM (IF(tgl_byr LIKE "201104%", jml_byr, 0)) AS jml_byr_04,
      	SUM (IF(tgl_byr LIKE "201105%", jml_byr, 0)) AS jml_byr_05
      FROM
      	tunai
      

      Jika parameter lebih dari 1

      SELECT
      	SUM (CASE WHEN tgl_byr LIKE "%01%" AND tahun LIKE "2011%" END) AS jml_byr_01,
      	SUM (CASE WHEN tgl_byr LIKE "%02%" AND tahun LIKE "2011%" END) AS jml_byr_02,
      	SUM (CASE WHEN tgl_byr LIKE "%03%" AND tahun LIKE "2011%" END) AS jml_byr_03,
      	SUM (CASE WHEN tgl_byr LIKE "%04%" AND tahun LIKE "2011%" END) AS jml_byr_04,
      	SUM (CASE WHEN tgl_byr LIKE "%05%" AND tahun LIKE "2011%" END) AS jml_byr_05
      FROM
      	tunai
      
  • Terima kasih banyak mas, tapi masih ada pertanyaan. Kalau ini saya aplikasikan di database oracle muncul error ya ORA-00907: missing right parenthesis

  • Om mau nanya, saya punya tabel :
    ———————————————————-
    | Kode | Header | Nama | Saldo |
    ———————————————————-
    1-10-0 | – | Kas |
    1-11-0 | 1-10-0 | Kas A | 1000
    1-12-0 | 1-10-0 | Kas B | 200
    2-10-0 | – | Kendaraan |
    2-11-0 | 2-10-0 | Mobil |
    2-11-1 | 2-11-0 | avanza | 50
    2-11-2 | 2-11-0 | jazz | 80
    2-12-0 | 2-10-0 | Motor |
    2-12-1 | 2-12-0 | honda | 30
    ———————————————————-

    Bagaimana jika saya update atau insert salah satu kode maka total saldo otomatis ter SUM ke header masing2 kode seperti berikut :
    ———————————————————-
    | Kode | Header | Nama | Saldo |
    ———————————————————-
    1-10-0 | – | Kas | 1200
    1-11-0 | 1-10-0 | Kas A | 1000
    1-12-0 | 1-10-0 | Kas B | 200
    2-10-0 | – | Kendaraan | 160
    2-11-0 | 2-10-0 | Mobil | 130
    2-11-1 | 2-11-0 | avanza | 50
    2-11-2 | 2-11-0 | jazz | 80
    2-12-0 | 2-10-0 | Motor | 30
    2-12-1 | 2-12-0 | honda | 30
    ———————————————————-

    Mohon bantuannya Om 🙂

    • Fungsi terkait untuk menangani permasalahan tersebut biasanya pakai trigger mas, namun sepengetahuan saya, di MySQL kita tidak dapat memanipulasi row pada tabel yang sama, ketika tabel tersebut sedang dimanipulasi baik dengan trigger maupun procedure, contoh ketika kita menginsert atau mengupdate row tertentu, di waktu bersamaan tidak dapat meng insert atau update row yang lain.

      Mungkin cara yang bisa dipakai adalah membuat temporary tabel, nilai saldo disimpan di tabel tersebut, kemudian dipindahkan ke tabel asli, namun hal tersebut akan merepotkan jika data yang dimanipulsai jumlahnya besar.

      Walaupun kita tidak dapat memanipulasi row yang lain, kita dapat memanipulasi nilai yang akan di tambahkan atau di ubah, misal dengan trigger berikut, kita memanipulasi data saldo yang akan ditambahkan menjadi total saldo di header yang sama:

      DELIMITER $$
      CREATE TRIGGER update_total_saldo BEFORE INSERT ON kendaraan
      FOR EACH ROW
      BEGIN
           DECLARE  total INT(11);
           SELECT SUM(saldo) + NEW.saldo INTO total FROM kendaraan WHERE header = NEW.header;
           SET NEW.saldo = total;
      END
      $$
      DELIMITER ;
      

      perintah diatas hanya bisa dilakukan ketika data belum ditambahkan BEFORE UPDATE tidak bisa dilakukan ketika data setelah ditambahkan AFTER UPDATE

      sehingga jika kita lakukan perintah

      INSERT INTO kendaraan VALUES ('1-13-0', '1-10-0' , 'Kas C', 1200);
      

      maka nilai saldo akan menjadi 2400 bukan 1200 lagi.

      Semoga dapat membantu.
      Salam 🙂

    • Mungkin seperti ini mas:

      SELECT id_pelanggan, tgl_byr, jml_byr
      FROM tunai
      GROUP BY id_pelanggan, tgl_byr
      

      hasilnya:

      id_pelanggan	tgl_byr		jml_byr
      012546		20100202	500000
      012546		20100310	3500000
      012546		20110410	1500000
      015558		20100410	775000
      015558		20110410	2900000
      020011		20100202	2450000
      020011		20110202	1500000
      020011		20110310	1250000
      020011		20110410	750000
      027845		20100310	2730000
      027845		20110202	1550000
      027845		20110410	4949000
      
  • Mas..kalo menghitung pembagian antar field dari 2 table berikut:
    Tabel 1:
    ————————————————————
    ID | Perusahaan | penghasilan | Pajak |
    ————————————————————-
    1 | PT. Anugerah | 20.000.000 | |
    2. | CV. Makmur | 20.000.000 | |

    Keterangan:
    – ID (int) (10) (key)
    – Perusahaan (varchar) (50)
    – Penghasilan (varchar) (30)
    – Pajak (Varchar) (30)

    Tabel 2:
    ————————————————————
    ID | Perusahaan | parameter_pajak |
    ————————————————————-
    1 | PT. Anugerah | 200.000 |
    2. | CV. Makmur | 200.000 |

    Keterangan:
    – ID (int) (10) (key)
    – Perusahaan (varchar) (50)
    – Parameter_pajak (varchar) (30)

    Pertanyaanya:
    Misal kita mau menghitung isi kolom “Penghasilan (table-1)” dibagi isi kolom “Parameter_pajak (table-2)” dan hasil baginya otomatis akan terinput ke kolom “Pajak (table-1)”. Serta jika nilai “parameter_pajak (table-2)” dirubah nilai angkanya.. maka total pembagian di “pajak (table-1)” juga akan otomatis berubah. Caranya bagaimana ya mas?? tolong dong mas…makasih sebelumnya.

    • Untuk pertanyaan pertama, coba query ini mas:

      UPDATE tabel_1 SET pajak = penghasilan / (SELECT parameter_pajak FROM tabel_2 WHERE id = 1) WHERE id = 1
      

      yang kedua bisa menggunakan trigger dengan syntax:

      DELIMITER $$
      CREATE TRIGGER update_pajak
          AFTER UPDATE ON tabel_2
          FOR EACH ROW BEGIN
      
          UPDATE tabel_1
          SET pajak = tabel_1.penghasilan / NEW.parameter_pajak
          WHERE tabel_1.id = NEW.id;
      END $$
      DELIMITER;
      

      Jika syntak diatas dijalankan di PHPMyAdmin, mungkin ada pesan error, namun diabaikan saja, biasanya trigger sudah kesimpan. Setelah itu
      bisa dicoba dengan mengupdate tabel 2:

      UPDATE tabel_2 SET parameter_pajak = 300000 WHERE id = 2;
      

      setelah itu coba cek isi tabel_1

      Sedikit saran dari saya mas:
      1. Untuk nulai angka seperti kolom penghasilan, pajak, dan parameter_pajak, gunakan type data INT, atau BIGINT, karena akan memudahkan memanipulasi data
      2. Untuk penaman tabel maupun field tabel gunakan penamaan yang standar, biasanya huruf kecil semua + underscore, agar memudahkan kita ketika menulis kode, saya biasanya menulis syntax MySQL dengan huruf kapital sehingga jelas perbedaan mana syntax, mana tabel/field.

      Semoga membantu
      Salam…

      • Trimakasih mas untuk sarannya, dan field nya udah sya ganti.
        Trus untuk tipsnya juga sudah sya praktekkan sesuai instruksi, dan triggersnya sih udah masuk mas, tapi kok nilainya gak muncul di table ya mas?? di kolom “pajak(table_1)” tetep kosong tuh mas. Trus saat saya masukin script yg kedua, muncul pesan erros “#1054 – Unknown column ‘id = 2’ in ‘where clause’ “.

        Sebagai pertimbangan mas, misalnya table_2 (parameter_pajak) itu saya jadiin satu dengan table_1, jadi saya pake 1 table saja. trus nanti pake sistem pembagian biasa, ama nanti tinggal di select saat nampilin ke browser (kolom “parameter_pajak” ditampilin buat admin, dan kolom “perusahaan & pajak” untuk user). Kira2 dri sisi efektif dan keamanannya lebih bagus dipisah atau disatuin aja mas??

        Mohon pencerahannya mas.., terimakasih banyak sebelumnya.

        • Jawaban 1:
          Untuk tabelnya coba seperti ini mas:

          CREATE TABLE IF NOT EXISTS `tabel_1` (
            `id` int(11) NOT NULL,
            `perusahaan` varchar(50) NOT NULL,
            `penghasilan` int(11) NOT NULL,
            `pajak` int(11) NOT NULL
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
          
          INSERT INTO `tabel_1` (`id`, `perusahaan`, `penghasilan`, `pajak`) VALUES
          (1, 'PT. Anugerah', 20000000, 0),
          (2, 'CV. Makmur', 20000000, 0);
          
          CREATE TABLE IF NOT EXISTS `tabel_2` (
            `id` int(11) NOT NULL,
            `perusahaan` varchar(50) NOT NULL,
            `parameter_pajak` int(11) NOT NULL
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
          
          INSERT INTO `tabel_2` (`id`, `perusahaan`, `parameter_pajak`) VALUES
          (1, 'PT. Anugerah', 200000),
          (2, 'CV. Makmur', 200000);
          

          Jawaban 2:

          • Untuk field pajak pada tabel_1 tidak perlu di buat karena merupakan attribut komposit (bisa didapatkan dari hasil operasi field lain) dengan penghasilan / parameter pajak, namun situasional juga, kalau sangat terpaksa bisa di tambahkan.
          • Untuk penggabungan tabel, sangat tergantung dari tabel-tabel yang lain, kalau hanya tabelnya itu saja, sebaiknya digabung saja mas, karena tidak ada attribut (kolom) bernilai banyak, jadi fieldnya id, perusahaan, penghasilan, parameter_pajak
          • Jika harus dipisah, sebaiknya entitas perusahaan berdisi sendiri, misal tabel_1 dengan attribute: id_perusahaan, nama_perusahaan sedangkan tabel_2 dengan attribute id_perusahaan, penghasilan, pajak
          • jangan mengulang nama perusahaan, karena akan mempengaruhi integritas data, misal nama perusahaan di tabel_1 diubah, maka tabel_2 sudah tidak sinkron lagi
          • penamaan id sebaiknya spesifik, misal id_perusahaan, bukan sekedar id, karena ketika id_perusahaan menjadi foreign key, akan mudah teridentifikasi, disamping itu ketika memudahkan kita dalam melakukan join ketika menulis kode SQL, hal ini akan terasa jika bekerja dengan banyak tabel, puluhan hingga mungkin ratusan tabel
          • nama tabel sebaiknya mencerminkan isi tabel, saya menggunakan tabel_1 dan tabel_2 hanya untuk mempermudah saja
          • Agar lebih mendalam, bisa membaca buku ini mas, Dasar Perancangan dan Implementasi Database karya Abdul Kadir, atau Pengantar Data Base / Database karya Ir. Fatansyah

          Semoga dapat membantu…
          Salam….

  • Hallo om agus ph,

    Saya mau tanya
    Kalo cara menghitung total part reject berdasarkan tanggal, shift, part

    Tanggal | shift | barang | reject | jml
    2015-08-20 | S1 | abc | rusak | 3
    2015-08-20 | S1 | abc | patah | 5
    2015-08-20 | S1 | abc | ancur | 7
    2015-08-20 | S1 | def | pecah | 2
    2015-08-20 | S2 | abc | rusak | 4
    2015-08-20 | S2 | def | rusak | 1

    Saya mau menampilkan total reject ketika saya memilih pada option combo box:
    tanggal ’20 agustus 2015′ di ‘shift 1’ untuk part ‘abc’

    Maka tanpa harus submit, akan tampil nilai total di dalam textbox (readonly).

    Mohon pencerahannya.
    Sebelum dan sesudahnya terimakasih om 🙂

    • Misal tabel nya bernama produk, query yang digunakan bisa memakai ini mbak:

      SELECT SUM(jml) as JUMLAH
      FROM produk
      WHERE tanggal = '2015-08-20' AND shift = 'S1' AND barang = 'abc'
      

      nanti ketemu hasilnya 15

      untuk memanggil query tersebut ketika combo box di ganti nilainya, bisa menggunakan ajax, javascript. jika pengen lebih mudah bisa pakai library seperti jquery, event nya bisa pakai onChange, ajaxnya bisa menggunakan get

      Semoga dapat membantu

  • Wih artikelnya keren. Oh ya gan ane mau tanya klo menjumlahkan (bukan di sum) 2 field mysql dan menjadi field tabel baru (AS) gimana ya??. Maklum masih amatiran ×_×

    • Terima kasih mas.
      Misal kita punya tabel nilai_ujian dengan field nama, nilai1 dan nilai2. Maksudnya ingin menjumlahkan field nilai1 dan nilai2 ya mas? kalau yang dimaksud seperti itu bisa dicoba query berikut:

      SELECT nama, nilai1 + nilai2 as jumlah FROM nilai_ujian
  • Mas, minta bantuannya buat tampilan dibawah ini :

    001 KARYA UMUM 49 49
    001 FILSAFAT DAN PSIKOLOGI 928 928
    001 AGAMA 899 899
    001 ILMU-ILMU SOSIAL 186 186

    Kode nya seharusnya berurutan mas seperti : 001, 002, 003, 004

    query yang saya pakai seperti ini mas :

    $Query0 = mysqli_query($conn, “SELECT SUBSTR(eks_klasifikasi, 2, 3) AS KODE, COUNT(buku_id) AS JUMLAH_JUDUL, COUNT(eks_buku) AS JUMLAH_EKS FROM m_buku JOIN m_eksemplar ON m_buku.buku_id = m_eksemplar.eks_buku WHERE eks_klasifikasi LIKE ‘%0’ AND buku_id IS NOT NULL”)

    Fungsi LIKE nya saya ganti untuk nomor urut 002 tapi pas di tampilan tetap 001. Thanks bantuannya Mas

    • Saya belum ada gambaran data awalnya mas, cuman bisa dicoba untuk menambahkan group by, karena ketika kita menggunakan fungsi agregat seperti COUNT, maka dibelakang layar MySQL akan melakukan group, yang field nya otomatis dipilihkan oleh MySQL, sehingga kadang hasil untuk field non agregat tidak sesuai harapan.

  • dear om agus,

    terima kasih atas responnya..
    maksud saya sih saya membuat grand total dariphp karena untuk menguji hasil querynya.
    saya mau buat grand total untuk jurnal umum di akuntansi. jadi saya bisa cek apakah debet dan kreditnya sama. jadi bila ada kesalahan input di detailnya, saya bisa crosscheck.
    btw, sekali lagi, terima kasih atas pencerahannya.. sukses ya om agus..

    salam,

    • Oh begitu ya mas,
      iya bisa pakai PHP mas, memang tidak bisa semua output dapat kita dapatkan langsung dari query MySQL,
      untuk case yang kompleks kadang perlu bantuan PHP.
      Sukses juga ya mas Awy…

  • Mas Agusph
    Jika saya ingin membuat tabel PERHITUNGAN program gaji pegawai sederhana misal :
    seperti perkalian penjumlahan dan lain lain dan program tsb saya SELIPKAN di program PHPMAKER apakah ada bedanya ? mksdnya apakah coding PHP murni dan PHPMAKER berbeda ? terima kasih

    • PHPMaker menyediakan berbagai fungsi untuk fetching data pada database mas, secara default aplikasi tersebut menggunakan active record untuk pengelolaan databasenya, namun kita juga dapat menjalankan perintah SQL murni seperti menggunakan fungsi ew_LoadRecordset

  • om agus numpang tanya kalo mau nampilkan

    nama    |jml
    acer 470|1|
    acer 470|3|
    

    biar bisa tampil kayak gini

    acer 470|4|
    
  • om agus saya mau tanya, tapi sebelumnya saya jelaskan dulu ini saya bingung di sistem yang saya buat yaitu sistem koperasi, nah saya bingungnya cara nampilin sisa angsuran yang belum di bayar,contoh:si a meminjam 12 jt dan susah di angsur 1jt per bulan dan sudah bulan ke 6 nah jadinya 12-6 = 6 jt sisa hutang yang harus di angsur saya bingung cara menampilkannya dengan query , mohon bantuannya dan satu lagi untuk menampilkan ansuran ke berapa juga masih bingung trims

    • Saya perlu tahu struktur tabel nya mas, misal:

      tabel nasabah
      id_nasabah | nilai_kredit
      1 | 12000000

      tabel_angsuran
      id_nasabah | jml_byr | tgl_byr
      1 | 1000000 | 2016-01-01
      1 | 1000000 | 2016-02-01
      1 | 1000000 | 2016-03-01
      1 | 1000000 | 2016-04-01
      1 | 1000000 | 2016-05-01
      1 | 1000000 | 2016-06-01

      Bisa dicoba query ini mas

      SELECT id_nasabah, nilai_kredit - jml_angsuran AS saldo
      FROM tabel_nasabah
      LEFT JOIN (
      	SELECT id_nasabah, SUM(jml_byr) as jml_angsuran
      	FROM tabel_angsuran
      	GROUP BY id_nasabah
      ) as tbl_angsuran
      USING (id_nasabah)
      
  • Om agus, mau tanya nih
    Saya punya query spt ini:

    SELECT pembelian.kode_barang, 
    		SUM(pembelian.jumlah) AS beli, 
    		penjualan.kode_barang, 
    		SUM(penjualan.jumlah) AS jual. 
    		(barang.kode_barang) AS kode_barang, 
    		barang.nama_barang
    FROM (
    		SELECT * FROM barang 
    		JOIN pembelian 
    		ON barang.kode_barang = pembelian.kode_barang
    	) as pembelian
    LEFT JOIN penjualan ON barang.kode_barang = penjualan.kode_barang
    GROUP BY barang.kode_barang
    

    Yg sy tanyakn
    Ketika input penjualan.jumlah misalkan 1 tapi yg tampil kok gk sesuai yg di input ya, tampil nya jadi 2
    Klo input 11 jadi 22

    Mohon bantuan nya…
    Terimakasih sebelumnya

  • udah solved mas agus
    terimaksih atas referensi nya
    kira-kira query nya seperti ini:

    SELECT `t`.`kode_barang`, `t`.`nama_barang`, `t`.`satuan`, `t`.`kategori`,
    		SUM(`t`.`belii`) AS `beli`,  SUM(`t`.`juall`) AS `jual` 
    FROM
    (
    	SELECT `barang`.`nama_barang`, `barang`.`satuan`, `barang`.`kategori`,
    		`pembelian`.`kode_barang`, SUM(`pembelian`.`jumlah`) As `belii`, NULL AS `juall`
    	FROM `pembelian` 
    	LEFT JOIN `barang` USING (`kode_barang`) 
    	GROUP BY `barang`.`kode_barang` 
    		UNION 
    	SELECT `barang`.`nama_barang`, `barang`.`satuan`, `barang`.`kategori`,
    		 `penjualan`.`kode_barang`, NULL AS `belii`,SUM(`penjualan`.`jumlah`) AS `juall` 
    	FROM `penjualan` 
    	LEFT JOIN `barang` USING(`kode_barang`)
    	GROUP BY `barang`.`kode_barang`
    ) AS `t`  GROUP BY `kode_barang`
    

    mohon di koreksi jika ada salah 🙂
    maaf telat replay

  • Mas Agusph saya punya tabel akun dan jurnal bagaimana querynya untuk menampilkan Neraca?

    TABEL AKUN
    KODE	NAMA_AKUN	JENIS	                GOLONGAN	    KET	        SALDO_AWAL
    1010001	Kas	        Aktiva	                Aktiva Lancar	       D	10.000.000
    1010002	Persediaan	Aktiva	                Aktiva Lancar	       D	5.000.000
    1020001	Mobil	        Aktiva	                Aktiva Tetap	       D	10.000.000
    1020002	Tanah	        Aktiva	                Aktiva Tetap	       D	20.000.000
    2010001	Utang Bank	Pasiva	                Kewajiban Lancar       K	4.000.000
    2010002	Utang Supplier	Pasiva	                Kewajiban Lancar       K	2.000.000
    3010001	Modal Pemilik	Modal	                Modal	               K	79.000.000
    3020001	Rugi Laba	Modal	                Rugi Laba	       K	14.000.000
    4010001	Pendapatan 1	Pendapatan	        Pendapatan Operasional	K	20.000.000
    4010002	Pendapatan 2	Pendapatan	        Pendapatan Operasional	K	5.000.000
    4020001	Pendapatan Lain	Pendapatan	     Pendapatan Non Operasional	K	2.000.000
    5010001	Biaya Gajih	Biaya	               Biaya Operasional	D	10.000.000
    5010002	Biaya Atk	Biaya	               Biaya Operasional	D	2.000.000
    5020001	Biaya Lainnya	Biaya	           Biaya Non Operasional	D	1.000.000
    
    
    
    TABEL JURNAL
    NO 	TGL	        KODE	GOLONGAN	              KET	NOMINAL
    1	2016/03/01	1010001	Aktiva Lancar	               D	1.000.000
    1	2016/03/01	2010001	Kewajiban Lancar	       K	1.000.000
    2	2016/03/01	3010001	Modal	                       D	2.000.000
    2	2016/03/01	1010001	Aktiva Lancar	               K	2.000.000
    3	2016/03/01	1010001	Aktiva Lancar	               D	5.000.000
    3	2016/03/01	4010001	Pendapatan Operasional	       K	5.000.000
    4	2016/03/01	5010001	Biaya Operasional	       D	2.000.000
    4	2016/03/01	1010001	Aktiva Lancar	               K	2.000.000
    
    
    TABEL NERACA
    Aktiva			
    	Aktiva Lancar		
    1010001	Kas	                       D	12.000.000
    1010002	Persediaan	               D	5.000.000
    	Total Aktiva Lancar		        17.000.000
    			
    	Aktiva Tetap		
    1020001	Mobil	                       D	39.000.000
    1020002	Tanah	                       D	20.000.000
    	Total Aktiva Tetap		        59.000.000
    	Total Aktiva		                76.000.000
    			
    Pasiva			
    	Kewajiban Lancar		
    2010001	Utang Bank	               K	5.000.000
    2010002	Utang Supplier	               K	2.000.000
    	Total Kewajiban Lancar		        7.000.000
    			
    	Modal		
    3010001	Modal Pemilik	               K	52.000.000
    	Total Modal		                52.000.000
    			
    	Rugi Laba		
    3020001	Rugi Laba	               K	17.000.000
    	Total Pasiva		                76.000.000
    
    • Untuk dapat menghubungkan kedua tabel reation nya harus ONE to ONE mas, maka perlu untuk membuat tabel jurnal menjadi 1 row untuk setiap kode akun, coba query berikut mas:

      SELECT kode, nama_akun, ta.ket,
      		CASE 
      			WHEN ta.jenis = "Aktiva"
      			THEN saldo_awal + nominal_d - nominal_k 
      			WHEN ta.jenis = "Pasiva"
      			THEN saldo_awal - nominal_d + nominal_k
      			ELSE 0
      			END 
      		AS Saldo
      FROM tabel_akun ta
      LEFT JOIN	
      	(
      		SELECT kode, jenis, SUM(IF (ket = "D", nominal, 0)) as nominal_d, SUM(IF(ket = "K", nominal, 0)) as nominal_k
      		 FROM(
      			 SELECT kode, jenis, tj.ket, SUM(nominal) as nominal 
      			 FROM tabel_jurnal tj 
      			 LEFT JOIN tabel_akun USING(kode)
      			 WHERE tj.ket = "D" GROUP BY kode
      				UNION ALL
      			 SELECT kode, jenis, tj.ket, SUM(nominal) as nominal 
      			 FROM tabel_jurnal tj
      			 LEFT JOIN tabel_akun USING(kode)
      			 WHERE tj.ket = "K" GROUP BY kode
      		) as temp
      		GROUP BY kode
      	) as jurnal USING(kode)

      Kode diatas memberikan gambaran umum untuk langkah selanjutnya

  • mas mau nanya kalau saya punya seperti ini querynya gimana ya mas
    no anggaran bobot %
    1 300 ?
    2 200 ?
    3 500 ?
    tot sum(anggaran) sum(bobot)
    bobot didapat dari => anggaran/sum(anggaran)*100

    mohon pencerahannya mas

  • data awal seperti ini mas agus

      
    field tabel kegiatan     field tabel anggaran
    id_kegiatan              id_anggaran
    kode_kegiatan            kode_kegiatan
    kegiatan                 anggaran
                             tahun_anggaran 
    
    bagaimana querynya untuk dapat tampilan seperti berikut 
    no    anggaran  bobot
    1     200.000   13,33
    2     400.000   26,67
    3     500.000   33,33
    4     100.000   6,67
    5     300.000   20,00
    Total 1500.000  100,00    
    

    nilai bobot di dapat dari bobot= (anggaran/totalanggaran)*100 atas bantuannya saya ucapkan terima kasih

    • Untuk single query bisa dicoba query ini mbak:

      SELECT id_anggaran, anggaran, ROUND(anggaran/(SELECT SUM(anggaran) FROM anggaran) * 100, 2) as bobot 
      FROM anggaran
      UNION
      SELECT 'TOTAL',  SUM(anggaran), '100%'
      FROM anggaran

      Namun kelemahannya, karena menggunakan subquery pada select, maka jika row yang diolah banyak maka waktu eksekusi semakin lama, arternatifnya bisa menggunakan variabel:

      SET @total = (SELECT SUM(anggaran) FROM anggaran);
      
      SELECT id_anggaran, anggaran, ROUND(anggaran/@total*100, 2) as bobot 
      FROM anggaran
      UNION
      SELECT 'TOTAL',  SUM(anggaran), '100%'
      FROM anggaran

      Hasilnya:

      +-------------+----------+-------+
      | id_anggaran | anggaran | bobot |
      +-------------+----------+-------+
      | 1           |   200000 | 13.33 |
      | 2           |   400000 | 26.67 |
      | 3           |   500000 | 33.33 |
      | 4           |   100000 | 6.67  |
      | 5           |   300000 | 20.00 |
      | TOTAL       |  1500000 | 100%  |
      +-------------+----------+-------+
  • mas Agus, izin bertanya..

    Data saya misal seperti ini :

    TABEL PEMAKAIAN BAHAN

    Tanggal      Bahan      Jumlah Pakai     Gudang
    01/04/2016   Terigu          10          BELAKANG
    02/04/2016   Terigu           5          BELAKANG
    03/04/2016   Terigu           5          depan
    10/04/2016   Terigu           5          BELAKANG
    01/04/2016   Mentega         10          BELAKANG
    02/04/2016   Mentega         10          depan
    04/04/2016   Mentega         10          BELAKANG
    01/04/2016   Telur           10          BELAKANG
    02/04/2016   Telur           10          BELAKANG
    03/04/2016   Telur           10          depan
    
    TABEL SUPPLY BAHAN
    
    Tanggal      Bahan      Jumlah Supply    Gudang
    01/04/2016   Terigu         100          BELAKANG
    01/04/2016   Terigu          50          depan
    04/04/2016   Terigu         100          BELAKANG
    01/04/2016   Telur          100          BELAKANG
    03/04/2016   Telur          100          BELAKANG
    01/04/2016   Mentega        100          BELAKANG
    04/04/2016   Mentega        100          BELAKANG
    

    Hasil yang ingin diharapkan adalah :
    JIKA kita pilih TANGGAL ANTARA : 01/04/2016 sampai dengan 03/04/2016 dan GUDANG : BELAKANG

    data yang ditampilkan adalah :

    Bahan      Jlh Pemakaian   Jumlah Supply
    Terigu         15               100
    Mentega        10               100
    Telur          20               200
    

    mohon share ilmunya mas, terima kasih sebelumnya…

    • Untuk menjoinkan tabel, hubungan antar tabel tersebut HARUS one to one relationship mbak, jika belum maka buat temporary tabel dengan subquery.
      Sedikit saran: Untuk tanggal sebaiknya pakai format standar database: yyyy-mm-dd, untuk nama gudang dan nama bahan bisa digantikan kode

      Dengan asumsi data apa adanya, coba gunakan query ini untuk memperoleh hasil yang diinginkan:

      SELECT bahan, SUM(jml_pakai) AS "Jml Pemakaian", jml_supply AS "Jml Supply"
      FROM pemakaian
      LEFT JOIN
      (
      	SELECT SUM(jml_supply) AS jml_supply, bahan
      	FROM supply
          WHERE STR_TO_DATE(tanggal, '%d/%m/%Y') BETWEEN "2016-04-01" AND "2016-04-03"
          GROUP By bahan
      ) as supply
      USING(bahan)
      WHERE STR_TO_DATE(tanggal, '%d/%m/%Y') BETWEEN "2016-04-01" AND "2016-04-03"
      GROUP BY bahan
  • Kalau source code penjumlahan yg dibahas versi php.nya gimana mas? Aku kurang paham soalnya masih newbie mas

  • Hello Pak Agus, mau nanya , misalnya saya punya
    Tabel 1 dengan total row 5 dan
    table 2 dengan total row 10 serta
    table 3 dengan total row 25

    pertanyaan :
    bagaiman supaya tabel 4 ini berisi semua row yang ada di tabel 1 , tabel 2, tabel 3 sehingga jumlah row yang ada di tabel 4 ini menjadi 50 row dan otomatis terus bertambah dan berkurang jika row ditabel 1 , tabel 2 dan tabel 3 ada yang bertambah atau berkurang

    Thanks, salam

    • Coba pakai union mas, misal:
      SELECT id_tabel1, nama_tabel1, alamat_tabel1 FROM tabel1
      UNION SELECT id_tabel2, nama_tabel2, alamat_tabel2 FROM tabel2
      UNION SELECT id_tabel3, nama_tabel3, alamat_tabel3 FROM tabel3

      Syarat menggunakan union: banyaknya kolom HARUS sama, jika tidak sama bisa menggunakan fixed value

  • izin tanya lagi pak Agus1.mau tanya lagi pak agus, apakah dengan cara diatas brarti ada terbentuk data tabel baru ya. ..? bukan hanya view saja kan.?
    2. bagaimana cara membuat tabel misalnya tabel terdiri dari 4 field dengan judul fieldnya yaitu:
    field1 : namabarang
    field2 : jumlahbarang
    field3 : hargapersatuan
    field4 : total
    lanjut pertanyaannya : bagaimana supaya tabel ini di field 4 otomatis terisi datanya karena hasil perkalian dari field2 dan field 3?
    thks salam

    • Itu temporary tabel mas, maksudnya ya adanya pas ketika query saja bukan real tabel.

      Untuk pertanyaan kedua, perkaliannya bisa dilakukan pada sisi aplikasi, hasilnya diinsert ke field total. Namun cara ini memiliki kelemahan yaitu ketika salah satu field diupdate, data filed total menjadi tidak akurat.

      Solusinya perkaliannya dijalankan disisi database, gunakan trigger mas, sehingga ketika salah satu field diupdate, otomatis menjalankan query untuk menghitung total dan mengupdate field total

  • 1. Pak agus,jadi bagaimana supaya bisa otomatis terbentuk data tabel hasil gabungan row semnua? Tdk hanya temporaly tabel, mengingat setiap nanti mau lihat gabungannya harus ketik sql itu lagi kan agak repot? Adakah cara yang otomatis sekali buat saja?
    2. Untuk field yang hasil perkalian otomatis keluar, ,. Boleh tolong di bantu kasih contoh sqlnya yang procedure? Sehingga tabel nya menjadi langsung nampak field 1, field2, field 3 dan field 4 nya otomatis terbentuk.. Maklum pak agus.. baru belajar… salam d

    • 1. Itu memang harusnya demikian mas. Jika menginginkan output seperti itu, memang harus pakai UNION, seberapa kalipun, kecuali desain tabelnya diubah, 3 tabel menjadi satu tabel. Jika menambahkan satu tabel untuk merekap 3 tabel tersebut, saya rasa itu bukan desain tabel yang baik, keuali dalam kondisi ekstra ordinary

      2. Setahu saya desain tabel yang baik salah satunya tidak ada field yang isinya turunan dari field yang lain, termasuk yang field total tadi, karena field tadi dapat dengan mudah didapat dari fieldd-field lainnya. Kecuali kalau memang kondisi ekstra ordinary. Untuk masalah query yang berulang, memang seharusnya seperti itu tinggal di optimize. Untuk trigger, bisa coba dipelajari ini mas: http://www.sitepoint.com/how-to-create-mysql-triggers/

  • simpel mantap, klo menjumlahkan baris satu dnegan baris sebulumnya gmn ya mas?
    misal
    ID JML PARETO
    01 10 10
    02 20 30
    02 10 40
    03 15 55
    01 20 75
    mencari jumlah pareto

  • mau tanya pak agus
    misal ada tabel dengan format
    nim | nama | alamat | nilai | bulan | tahun
    trs saya ingin menampilkan data dengan format
    nim | nama | alamat | nilai bulan sekarang | nilai bulan kemarin
    itu querynya seperti apa ya

    • Coba query ini mas:

      SELECT nim, nama, alamat, 
      		COUNT(IF(bulan = MONTH(NOW()), bulan, NULL)) AS jml_bln_sekarang,
      		COUNT(IF(bulan < MONTH(NOW()), bulan, NULL)) AS jml_bln_kemarin
      FROM `tabel`
      GROUP BY nim
      
      • blm bisa mas
        jadi isi di bulan itu dalam format angka 1-12, trs tahun misal 2016
        jadi itu pencariaan berdasarkan bulan yg ingin di tampilkan saja mas
        jadi misal saya ingin menampilkan data bulan 03 / april, maka saya pilih pencarian berdasarkan bulan april itu,
        trs yang ingin ditampilkan adalah bulan sebelumnya dan nilai bulan sebelumnya mas
        terima kasih

        • Blm bisanya kenapa ya mas?, atau cobe seperti ini:

          SELECT nim, nama, alamat, 
          		COUNT(IF(bulan = 4), bulan, NULL) AS jml_bln_sekarang,
          		COUNT(IF(bulan = 3, bulan, NULL)) AS jml_bln_kemarin
          FROM `tabel`
          WHERE bulan = 4
          GROUP BY nim

          Kalau belum bisa coba ditampilkan contoh datanya mas, biar saya tahu pasti bentuk datanya dan output yang diinginkan

  • pagi maaf saya newbie, mau nanya. cara menggunakan fungsi aritmatika pengurangan pada tabel yang saya buat. misal id = 1, gaji =1000 cashbon=200 sisa= pengen disi hasil pengurangan gaji-cashbon.
    operasinya gmna itu om? terus pengen otomatis ke id selanjutnya. nuwun

    • Langsung saja mas misal:

      SELECT id, gaji, cashbon, gaji - cashbon AS sisa
      FROM table
      

      Kalau belum bisa, bisa disebutkan data awalnya seperti apa mas….

  • mas mau nanya ,saya punya tabel seperti ini
    tabel a
    kode_barang nama minimal
    B12 Gula 12
    B13 Beras 15
    tabel b
    kode_detail kode_barang jumlah
    D01 B12 5
    D02 B13 5
    D03 B12 20

    pertanyaan saya mas, bagaimana menampilakan data dimana data lebih kecil dari minimal. jadi yang keluar nanti hanya beras gitu mas. Terimakasih sebelumnya

    • Coba pakai join kemudian pakai operator pebanding

      SELECT kode_detail, kode_barang, jumlah
      FROM tabel_b
      LEFT JOIN tabel_a USING (kode_barang)
      WHERE jumlah > minimal
      
  • mas sy lagi membuat grand total mirip seperti di atas, tapi bedanya, field saya definisikan varchar,
    awalnya lancar jaya mas, sampe saya masukin code yang grand total dia error di :

    Select ‘Grand Total’ AS alat.lokasi

    code yang saya gunakan ini

    SELECT alat.lokasi,
             SUM(CASE WHEN alat.type = 'laptop' THEN 1 ELSE 0 END) AS laptop,
             SUM(CASE WHEN alat.type = 'printer' THEN 1 ELSE 0 END) AS printer,
             SUM(CASE WHEN alat.type = 'ups' THEN 1 ELSE 0 END) AS ups,
             SUM(CASE WHEN alat.type = 'ht' THEN 1 ELSE 0 END) AS ht,
             COUNT(type) AS jumlah
        FROM alat
    GROUP BY alat.lokasi
    UNION ALL
    SELECT 'Grand Total' AS alat.lokasi,
    		 
             SUM(CASE WHEN alat.type = 'laptop' THEN 1 ELSE 0 END) AS laptop,
             SUM(CASE WHEN alat.type = 'printer' THEN 1 ELSE 0 END) AS printer,
             SUM(CASE WHEN alat.type = 'ups' THEN 1 ELSE 0 END) AS ups,
             SUM(CASE WHEN alat.type = 'ht' THEN 1 ELSE 0 END) AS ht,
             COUNT(type) AS jumlah
         FROM alat
    

    dan ini data saya mas

    id user type    lokasi
    1 anto laptop makassar
    2 budi laptop jkt
    3 budi printer jkt
    4 bagas laptop gowa
    5 ayu ht makassar
    6 fia ht malay
    7 fia laptop malay
    8 bagas ups gowa
    9 sengklek printer jkt
    10 bayu ht malay
    11 zul laptop makassar
    12 rajif ups gowa
    13 anto laptop makassar
    14 budi printer jkt
    

    mohon bantuannya mas

    • Tidak usah pakai AS alat.lokasi mas, langsung SELECT ‘Grand Total’, SUM … karena itu posisinya sebagai row tambahan (UNION ALL), maka kita tidak perlu mendefinisikan nama kolom (menggunakan AS) karena tetep tidak akan dipakai.

      Pada contoh diatas saya menggunakan alias hanya untuk memudahkan saja. Jika tetap ingin menggunakan alias, maka tidak perlu menggunakan dot mas, misal SELECT ‘Grand Total’ AS lokasi. Dot digunakan untuk mendefiniskan nama fiel d suatu tabel, sehingga pada kondisi diatas, MySQL akan menganggapnya field beneran buka alias, jadi error.

  • contoh kode SQL seperti ini :
    SELECT kelas, jk, COUNT(jk) As jml_jk FROM t_siswa Group BY jk, kelas ORDER BY `t_siswa`.`kelas` ASC

    saya coba convert/creat code PHP :

    tapi ga bisa saya jalankan di php. mohon bantuannya gimana contoh php secara lengkap

    trims sebelumnya mas..

  • mau tanya, sy punya tabel dg kolom id, bulan, jumlah (dalam satu tahun). kalau mau ambil data trimester gimana ya? misal jumlah januari-april, jumlah mei-agustus, jumlah september-desember?

    • Coba pakai SUM CASE mas:

      SELECT id,
      		SUM(CASE WHEN bulan >= 1 AND bulan <=3 THEN jumlah ELSE NULL END) as trimester_1,
      		SUM(CASE WHEN bulan >= 4 AND bulan <=6 THEN jumlah ELSE NULL END) as trimester_2
      FROM tabel
  • saya mau tanya mas saya punya tabel dengan kolom kode_part, nama_part, jumlah, harga, total harga, kalau saya mau mengkalikan jumlah dengan harga trus dapat total harga dan di tambah ppn 10% maka akan menghasilkan grand total gi mana ya mohon bimbingannya ?

    • Coba menggunakan query semacam ini mas:

      SELECT kode_part, nama_part, jumlah * harga AS total_harga, 
      jumlah * harga * 10% AS grand_total
      FROM tabel
      
  • mas mau tanya
    tabel saya kan ada tabel transaksi bayar, jadi mengambil data dalam 3tabel berbeda pake join, coding nya gmn mas?

  • mas tolong dong,kok aku buat falidasi malah eror ya,mngkin ini bukan pertanyaan yang pas untuk pembahasan tutorial di atas akan tetapi saya mnta tolong dong pencerahan nya

  • misi om saya mau nanya
    kalo misalkan

    nama   |nilai1 |nilai2 |nilai3 |jumlah |
    mail   |50     |60     |70     |     ? |
    

    om query untuk jumlah gmana ya om?

  • ass..
    om saya sangat bingung dengan penjumlahan ini..
    saya ada tugas dari pembimbing untuk membuat total harga.
    misalnya saya udh beli 2 hp dengan harga masing” 1.500.000 dan 3.000.000..
    pembimbing saya menginginkan agar totalnya menjadi 4.500.000 ketika di minta rekap penjualan..
    itu gmna ya mas…

    tolong beri scripnya ya om..
    danke

  • selamat pagi pak agus, mohon bantuannya juga nih
    jadi saya mau bkin rekap karyawan berdasrkan asal daerah menggunakan 2 tabel yaitu data_karyawan dan data_pekerjaan
    koding nya kurang lebih seperti ini :

    select bagian,
    	(select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Melawi" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as melawi_b,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Melawi" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as melawi_h,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Sintang" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as sin_b,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Sintang" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as sin_h,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Katingan" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as kat_b,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Katingan" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as kat_h,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Seruyan" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as seru_b,
       (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and kab="Seruyan" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as seru_h,
      	(select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and prov like "kal%" and kab"Melawi" and kab"Sintang" and kab"Katingan" and kab"Seruyan" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as kal_b,
        (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and prov like "kal%" and kab"Melawi" and kab"Sintang" and kab"Katingan" and kab"Seruyan" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as kal_h,
        (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and prov not like "kal%" and data_karyawan.status_gaji="1" and status="p" and bagian=b.bagian) as lain_b,
        (select count(*) from data_karyawan, data_pekerjaan where data_karyawan.id_kar=data_pekerjaan.id_karyawan and prov not like "kal%" and data_karyawan.status_gaji="2" and status="p" and bagian=b.bagian) as lain_h,
        melawi_b+melawi_h as jml
        
    from data_karyawan, data_pekerjaan b
    where data_karyawan.id_kar =b.id_karyawan
    group by b.bagian
    

    datanya berhasil tampil dan sesuai harapan namun terkendala untuk menghitung total karyawan perbaris dan perkolom (grand total) serta persentase di bawah grand totalnya pak

    sudah mencoba codingan diatas namun belum sesuai harapan, kira nya bisa d koreksi dan dibantu pak agus

      • oh iya pak, maaf yah membuat bingung. tabel nya kan ada 2 nih pak, tabel data_karyawan dan tabel data_pekerjaan
        data_karyawan :

        id_kar | nama    | status_gaji | kab       | Prov
        1      | andi    | 1           | Pontianak | Kalbar
        2      | bayu    | 2           | Melawi    | Kalbar
        3      | chandra | 1           | Melawi    | Kalbar
        
        ket : status_gaji 1 = bulanan, 2 = harian
        
        data_pekerjaan
        
        id_kar| bagian         | status
        1     | Adm & umum | p
        2     | Bengkel        | p
        3     | Bengkel        | p
        

        ket. status p = penempatan, soalnya data mutasi ane kasih status=m

        hasil yg d inginkan

        bagian           | hr_dari_melawi | Bln_dari_melawi | hr_dari_kalimantan | bln_dari_kalimantan |hr_pendatang | bln_pendatang | jumlah
        Adm & umum       | 0              | 0               | 0                  | 1                   | 0           | 0             | 1
        Bengkel          | 1              | 1               | 0                  | 0                   | 0           | 0             | 2
        Grandtotal       | 1              | 1               | 0                  | 1                   | 0           | 0             | 3
        persentase       | 33.33          | 33.33           | 33.33              | 0                   | 0           |100.00         |
        % karyawan lokal | ---------------------------------| 100%
        % karyawan pendatang | -------------------------    | 0
        

        ket. hr = harian, bln = bulanan, hr_kalimantan dan bln_kalimantan itu adalah jumlah karyawan yang berasal dari luar melawi gan, walaupun prov nya melawi itu kalbar tetap gak d hitung, yang dihitung yg selain dari melawi, sedangkan pendatang itu yang diluar kalimantan, entah itu dari jawa, papua, sumatera itu dihitung sebagai pendatang.
        yg saya belum bs itu menghitung jumlah, grandtotal, persentase, % karyawan lokal , % karyawan pendatang

        mohon bantuannya pak agus

        • Hindari penggunaan subquery mas, karena akan mempengaruhi performa, coba gunakan CASE.
          Query ini ada tiga bagian
          1. Bagian pertama menghitung per bagian
          2. Bagian kedua menghitung jumlah
          3. Bagian ketiga menghitung persentase
          Ketiganya dipisah UNION ALL
          Coba dipelajari mas…

          SELECT bagian,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS hr_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS bl_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS hr_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS bl_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS hr_lain,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS bl_lain,
          	COUNT(id_kar)  AS total
          FROM data_karyawan
          LEFT JOIN data_pekerjaan USING(id_kar)
          GROUP BY data_pekerjaan.bagian
          
          	UNION ALL
          
          SELECT "Jumlah" AS bagian,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS hr_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS bl_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS hr_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS bl_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS hr_lain,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS bl_lain,
          	COUNT(id_kar)  AS total
          FROM data_karyawan
          LEFT JOIN data_pekerjaan USING(id_kar)
          
          	UNION ALL
          
          SELECT "Persentase" AS bagian,
          	ROUND (
          	
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND kab = "Melawi"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_melawi,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND kab = "Melawi"
          				THEN id_kar
          			END
          		)  / COUNT(id_kar),
          		2
          	) AS bl_melawi,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND kab = "Pontianak"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_pontianak,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND kab = "Pontianak"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS bl_pontianak,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND prov != "Kalbar"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_lain,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND prov != "Kalbar"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS bl_lain,
          	"100%"  AS total
          FROM data_karyawan
          LEFT JOIN data_pekerjaan USING(id_kar)

          Atau bisa dibuat dua bagian menggunakan WITH ROLLUP

          SELECT IFNULL(bagian, "Jumlah") AS bagian,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS hr_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Melawi"
          			THEN id_kar
          		END
          	) AS bl_melawi,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS hr_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND kab = "Pontianak"
          			THEN id_kar
          		END
          	) AS bl_pontianak,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 1 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS hr_lain,
          	COUNT(
          		CASE 
          			WHEN status = "p" AND status_gaji = 2 AND prov != "Kalbar"
          			THEN id_kar
          		END
          	) AS bl_lain,
          	COUNT(id_kar)  AS total
          FROM data_karyawan
          LEFT JOIN data_pekerjaan USING(id_kar)
          GROUP BY data_pekerjaan.bagian
          WITH ROLLUP
          
          	UNION ALL
          
          SELECT "Persentase" AS bagian,
          	ROUND (
          	
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND kab = "Melawi"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_melawi,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND kab = "Melawi"
          				THEN id_kar
          			END
          		)  / COUNT(id_kar),
          		2
          	) AS bl_melawi,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND kab = "Pontianak"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_pontianak,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND kab = "Pontianak"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS bl_pontianak,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 1 AND prov != "Kalbar"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS hr_lain,
          	ROUND (
          		COUNT(
          			CASE 
          				WHEN status = "p" AND status_gaji = 2 AND prov != "Kalbar"
          				THEN id_kar
          			END
          		) / COUNT(id_kar),
          		2
          	) AS bl_lain,
          	"100%"  AS total
          FROM data_karyawan
          LEFT JOIN data_pekerjaan USING(id_kar)

          Hasil keduanya sama:

          +------------+-----------+-----------+--------------+--------------+---------+---------+-------+
          | bagian     | hr_melawi | bl_melawi | hr_pontianak | bl_pontianak | hr_lain | bl_lain | total |
          +------------+-----------+-----------+--------------+--------------+---------+---------+-------+
          | Adm&umum   |      1.00 |      0.00 |         1.00 |         0.00 |    1.00 |    0.00 |     3 |
          | Admin      |      0.00 |      0.00 |         0.00 |         0.00 |    1.00 |    1.00 |     2 |
          | Bengkel    |      2.00 |      1.00 |         0.00 |         0.00 |    0.00 |    0.00 |     3 |
          | Jumlah     |      3.00 |      1.00 |         1.00 |         NULL |    2.00 |    1.00 |     8 |
          | Persentase |      0.38 |      0.13 |         0.13 |         NULL |    0.25 |    0.13 |  100% |
          +------------+-----------+-----------+--------------+--------------+---------+---------+-------+

          Pada tabel diatas, terdapat desimal dua digit pada hasil penghitungan. Hal ini karena kita menggunakan UNION, MySQL akan menyesuaikan tipe datanya, untuk mengatasinya bisa gunakan CONCAT pada persentase

          • maaf baru balas lagi mas agus, kemarin kayaknya udah balas tp kelihatannya tidak masuk nih
            jd koding d atas udah d coba mas agus, berhasil tp untuk hasil d kolom total itu masih salah, hasilnya kisaran 31 – 35, lalu total-jumlah itu 3131, total-persentase itu 31303025. padahal data di tabel karyawan cm 9 data, tabel pekerjaan itu 11 data aja.

            apakah structure database saya ada yang salah yah ? di tabel data_karyawan ada
            id_kar, int(5), auto_inc
            status_gaji, varchar(1)
            kab, varchar(30)
            prov, varchar(30)

            sedangkan data_pekerjaan
            id_kerja,int(10), auto_inc
            id_kar,int(5)
            status, varchar(1)
            bagian, varchar(15)

            u/ yang status gaji sudah saya ganti menjadi int(1) tp hasilnya tetap sama, kira nya apa yang perlu d perbaiki yah mas ?

          • Saya belum paham mas maksudnya, tapi kalau lihat struktur tabelnya tidak ada masalah. Saya pakainya varchar semua tidak masalah, mysql akan otomatis melakuakan type casting jika diperlukan

            Pada jawaban saya kemarin saya tambah beberapa data agar hasilnya lebih real. Bisa minta tlg data full tabel nya seperti apa mas? Sama contoh outputnya, kalau kepanjangan bisa dikirim via email

          • iya mas, saya emailkan aja sql ama output yg d inginkan
            tolong emailnya mas, terima kasih

  • mas saya mau tanya untuk menjumlahkan sub total itu bagaimana, seperti nilai 1, nilai 2 pada tabel terus kita jumlahkan seperti
    SELECT nilai1 + nilai2 as jumlah from nilai
    lah masalahnya untuk menjumlahkan nilai keseluruan nilai pada as jumlah itu bagaiman?
    tolong solusinya master please

  • Selamat malam mas Agus saya mau tanya..sebelumnya terima kasih banyak telah merespon
    NIS | Nama | Tanggal 1 |Tanggal2 | Tanggal3 | Tanggal4 | Tanggal5 | Jumlah Huruf H
    011|Rudi | H | H | H | I | S | ??
    002 | Anto | S | A | S | H | H | ??

    Bagaimana query untuk mendapatkan nilai pada kolom Jumlah Huruf H tersebut , terima kasih mas Agus, sehat dan jaya selalu..

    • Sama sama mas,

      Intinya jika ingin melakukan operasi antar kolom, gunakan operator aritmatika seperti + atau -, sedangkan operasi antar baris, gunakan fungsi agregat seperti SUM() atau COUNT() sehingga pada contoh diatas kita gunakan operator +

      SELECT tanggal1, tanggal2, dst.., tanggal1 + tanggal2 + dst… AS jumlah_huruf_H

  • Mantepsss mas, ni yang lg dicarii.
    sering buka tutornya jagowebdev..
    Sya ijin aplikasikan yah.
    tks salam hangat..

  • mas minta pencerahannya,
    saya ingin menampilkan data dalam 1 bulan. dari kolom tanggal. dan kolom quantity
    1. dalam 1 hari(pertanggal) bnyak nilai input (contoh 3-4x input) jadi dalam 1 hari ada bnyak data.

    saya ingin menampilkan data 1 bulan, tapi yang dimunculin pertanggal. dan klo ada tanggal sama quantity nya di sum automatis.
    jadi hasilnya misal kaya gini.
    Tabel transaksi
    id_ tgltransaksi quantity
    1 2016-12-01 200
    2 2016-12-02 300
    3. 2016-12-03 400

    karena hasil query 2 kolom ini mau saya tampilkan ke highchart.

    Mohon bantuannya mas.. Terimakasih banyak.
    azmiftah85@yahoo.co.id

      • Yth Mas Agus,
        Udah aku jalankan diatas tapi error, (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘SUM(reg) as reg)

        Tapi gini deh mas biar jelas.
        ============================= TABEL
        idprod | tanggal_trk | qtyreg |Qtyproc |iduser
        ————————————————————————————
        1 2016-12-01 02:11:10 15106 859 1 1
        2 2016-12-03 05:09:19 15518 400 2 1
        3 2016-12-05 03:17:13 1176 600 3 1
        4 2016-12-06 00:00:00 10834 504 1
        5 2016-11-01 02:10:10 16243 201 5 2
        6 2016-11-03 10:07:00 17424 20 6 1
        7 2016-11-05 10:00:00 17432 7607 3
        8 2016-11-07 10:00:00 19271 134 8 1

        jadi datanya kan banyak, sya mau tampilkan data range date per 1 bulan dalam tahun xx.
        saya butuh nilai QTYREG dan QTYPROC.
        pada saat saya ambil 1 bulan, data di QTYREG & QTYPROC dengan tanggal yg sama langsung ditotal aja. jadi yang muncul hanya tgl 1-31.
        Klo dalam 1 tanggal ada 4 inputan maka langsung ditotal sum.

        Mohon bantuannya mas, terimakasih sebelumnya..
        ajmiftah85@gmail.com

        • Itu jumlah kolom di header beda sama jumlah kolom diisinya mas. Asusmsi seperti ini ya mas:

          +---------+---------------------+--------+---------+---------+
          | id_prod | tgl_trx             | qtyreg | qtyproc | id_user |
          +---------+---------------------+--------+---------+---------+
          |       1 | 2016-12-01 02:11:10 |  15106 |     859 |       1 |
          |       2 | 2016-12-03 05:09:19 |  15518 |     400 |       2 |
          |       3 | 2016-12-05 03:17:13 |   1176 |     600 |       3 |
          |       4 | 2016-12-06 00:00:00 |  10834 |     504 |       1 |
          |       5 | 2016-11-01 02:10:10 |  16243 |     201 |       5 |
          |       6 | 2016-11-03 10:07:00 |  17424 |      20 |       6 |
          |       7 | 2016-11-05 10:00:00 |  17432 |    7607 |       3 |
          |       8 | 2016-11-07 10:00:00 |  19271 |     134 |       8 |
          |       9 | 2016-12-03 10:11:19 |  10234 |     500 |       1 |
          +---------+---------------------+--------+---------+---------+

          Catatan: saya tambahkan 1 baris di paling bawah untuk tes hasil query.

          Intinya untuk melakukan penjummlahan antar baris, gunakan fungsi agregasi SUM(). Coba pakai query ini mas:

          SELECT tgl_trx, SUM(qtyreg), SUM(qtyproc) 
          FROM tb_test 
          WHERE MONTH(tgl_trx) = 12
          GROUP BY DATE(tgl_trx);

          Hasil:

          +---------------------+-------------+--------------+
          | tgl_trx             | SUM(qtyreg) | SUM(qtyproc) |
          +---------------------+-------------+--------------+
          | 2016-12-01 02:11:10 |       15106 |          859 |
          | 2016-12-03 05:09:19 |       25752 |          900 |
          | 2016-12-05 03:17:13 |        1176 |          600 |
          | 2016-12-06 00:00:00 |       10834 |          504 |
          +---------------------+-------------+--------------+
          

          Pada contoh diatas, data qtyreg dan qtyproc di total seperti pada tanggal 03.

          • mantaps dan luar biasa mas APH, hasilnya sudah sesuai harapan.
            Btw klo ada (AS) fungsinya apa, dan yang dibelakang as itu fungsinya jg gmn ya mas?

            Ilmu yang bermanfaat, semga berkah mas n sehat terus..
            Ditunggu updatean upload materinya..

            Terimakasih,

          • Amin, sama sama mas…

            AS digunakan sebagai alias mas yang akan ditampilkan sebagai header tabel hasil query. Misal:
            SELECT tgl_trx, SUM(qtyreg) , SUM(qtyproc), Hasil:

            +---------------------+-------------+--------------+
            | tgl_trx             | SUM(qtyreg) | SUM(qtyproc) |
            +---------------------+-------------+--------------+
            | 2016-12-06 00:00:00 |       10834 |          504 |
            +---------------------+-------------+--------------+
            

            SELECT tgl_trx, SUM(qtyreg) AS jml_1 , SUM(qtyproc) AS jml_2, Hasil:

            +---------------------+---------+----------+
            | tgl_trx             | jumlah_1| jumlah_2 |
            +---------------------+---------+----------+
            | 2016-12-06 00:00:00 |   10834 |      504 |
            +---------------------+---------+----------+

            Hal ini berguna utuk memudahkan pengolahan data, misal daripada meulis $row[‘SUM(qtyreg)’] lebih mudah $row[‘qtyreg’], selain itu juga bermanfaat jika kita melakukan query antar tabel yang memiliki field yang sama, karena ketika kita oleh dalam bentuk array, nama field yang sama akan bergabung menjadi satu.

          • Dear Mas Agus,

            Untuk bisa dan berhasil saya praktekkan di PHP.
            cuma saya ada kendala, mhon pencerahannya mas.

            Ketika saya padukan untuk ditampilkan ke highchart Grafik, itu kendala tanggalnya jadi ga beraturan. ada yang bolong. secara
            jadi minta pencerahannya, antara SUM data diatas + convert datetime to javascript.

            saya menggunakan begini mhon koreksi.

            ( $menu=array();
            $menu2=array();
            $result = $conn->query(“SELECT tgl_trx, SUM(qtyreg) as qtyreg FROM tabel_s WHERE MONTH(tgl_trx)=’12’ AND YEAR(tgl_trx)=’2016′ GROUP BY DATE(tgl_trx) order by tgl_trx”);
            while ($row = $result->fetch_assoc()) {
            $date = strtotime($row[‘tgl_trx’]);
            $date = $date *= 1000 ;

            $menu[] = $date;
            $menu2[] = $row[‘qtyreg’];
            }
            $aray=join(” ,”,$menu);
            $aray2=join(” ,”,$menu2);

            )
            Plus klo hasil QTYreg bisa pembulatan.

            Mohon bantuannya mas agus,
            Terimakasih bnyak.

          • Coba di view source mas, apakah javascriptnya sudah bener.
            Pastikan bentuk data di javascript sudah array atau object.

            Untuk yang array, coba diganti:
            $aray= ‘[‘ . join(‘,’,$menu) . ‘]’;
            $aray2= ‘[‘ . join(‘,’,$menu2) . ‘]’;

            Itu datenya dikali 1000 kenapa mas?

            Untuk pembulatan bisa menggunakan fungsi ROUND di SQL mas, misal:
            SELECT tgl_trx, ROUND(SUM(qtyreg)) as qtyreg

          • Dear Pak APH,

            Terimakaish pak sudah berhasil.
            CUma saya mau digabungkan antara sum dan AVG, nilai dari QTYREG mau diambil avg min dan max nya.,

            Jadi dari tabel diatas itu mau hasilnya.
            1. dikeluarin berdasarkan tanggal dan di QTYReg di sum (sudah ok)
            2. dari data QTYreg ini mau saya ambil avg min dan Max nya.

            Saya menggunakan mysqli_prepare.

            ($stmt = mysqli_prepare($con, "SELECT date_format(tanggal, '%d') as pTgl, sum(reg) as pReg, sum(reproc) as pReproc FROM dprod_datetime where MONTH(tanggal)='$bulan' AND year(tanggal)='$tahun' GROUP BY pTgl order by tanggal asc");
            	$result = array('day' => array(), 'amount' => array(),'reproc' => array());
            	if ($stmt) {
            		mysqli_stmt_execute($stmt);
            		mysqli_stmt_bind_result($stmt, $day, $amount, $reproc);
            	    while (mysqli_stmt_fetch($stmt)) {
            	        $result['day'][] = $day;
            	        $result['amount'][] = (int)$amount;
            			$result['reproc'][] = (int)$amount;
            	    }
            	    mysqli_stmt_close($stmt);
                }
             
            ?> )

            Mohon pencerahannnya mas aGus,
            Terimakasih.

          • Sudah bisa belum ya mas? oiya untuk yang avg min dan avg max nya maksudnya bagaimana ya mas? biasanya avg hanya berupa satu nilai yang mencerminkan nilai rata-rata dari data

          • Dear Mas Agus,

            Sudah jalan untuk sum dan Grafiknya.

            Yang kmrin dari mas agus ini :

            mysqli_prepare($con, "
            			SELECT date_format(tanggal, '%d') as pTgl, 
            				sum(reg) as pReg, 
            				sum(reproc) as pReproc 
            			FROM dprod_datetime where MONTH(tanggal)='$bulan' AND year(tanggal)='$tahun' 
            			GROUP BY pTgl 
            			order by tanggal asc"
            		);
            

            sudah bisa, cuma saya dari query diatas ingin mengambil Hasil angka yang Minimal dan angka Maksimal dari [sum(reg)] as pReg.

            Nah gabungkan antara sum dan agregation min dan max, mhon pencerahannya mas.
            Karena akan ditampilkan berbeda antara pReg SUm dan nilai maksimah dari pReg.

            Maaf nih bolak balik tanya..hehehe
            matur suwun.

          • Untuk mencari min dan max dari pReg bisa dengan dua cara mas, bisa dengan PHP, bisa dengan SQL. Dengan PHP, loop hasil query diatas, buat array berisi data pReg, kemudian cari value minimal dan maksimal dari array tersebut

            Cara kedua, bisa menggunnakan subquery:

            SELECT MIN(pReg) as min_pReg, MAX(pReg) AS max_pReg
            FROM (
            	SELECT date_format(tanggal, '%d') as pTgl, 
            		SUM(reg) as pReg, 
            		SUM(reproc) as pReproc 
            		FROM dprod_datetime 
                	WHERE MONTH(tanggal)=12 AND year(tanggal)=2016
            	GROUP BY pTgl 
            	ORDER BY tanggal ASC
                ) AS tb_temp

            Hasil:

            +----------+----------+
            | min_pReg | max_pReg |
            +----------+----------+
            |     1176 |    25752 |
            +----------+----------+
        • Dear Mas agus,

          Untuk menampilkan di PHP dengan alias ini saya masih awam mas,
          mohon diberikan contohnya. klo via sql sudah bisa.

          sya coba2 hasilnya jadi tidak jalan.

          Ini query saya ( $result = mysql_query("SELECT MIN(pReg) as min_pReg, MAX(pReg) AS max_pReg FROM ( SELECT date_format(tanggal, '%d') as pTgl, SUM(reg) as pReg, 
          		SUM(reproc) as pReproc 
          	FROM dprod_datetime 
              WHERE MONTH(tanggal)=12 AND year(tanggal)=2016
          	GROUP BY pTgl 
          	ORDER BY tanggal ASC
              ) AS tb_temp "); 
          	
          
          $bln = array();
          $bln['name'] = 'pTgl';
          $rows['name'] = 'pReg';
          $rows2['name'] = 'pReproc';
          
          while ($r = mysql_fetch_array($result)) {
              $bln['data'][] = $r['pTgl'];
              $rows['data'][] = $r['pReg'];
          	$rows2['data'][] = $r['pReproc'];
          
          }
          )
          

          setelah ditambahkan fungsi max n min ini jadi tidak keluar hasilnya.

          mhn maaf mas agus merepotkan, masih belajar.hehe

          Terimakasih banyak.

          • Coba ini mas:

            DARI QUERY:

            // DARI QUERY
            $conn = mysqli_connect('localhost', 'root', '', 'test');
            $result =  mysqli_query($conn, "SELECT MIN(pReg) as min_pReg, MAX(pReg) AS max_pReg 
            				FROM ( 
            					SELECT date_format(tanggal, '%d') as pTgl, 
            						SUM(reg) as pReg, 
            						SUM(reproc) as pReproc 
            					FROM dprod_datetime 
            					WHERE MONTH(tanggal)=12 AND year(tanggal)=2016
            					GROUP BY pTgl 
            					ORDER BY tanggal ASC
            				) AS tb_temp "
            			);
            
            $hasil = mysqli_fetch_assoc($result);
            $min = $hasil['min_pReg'];
            $max = $hasil['max_pReg'];
            print_r($hasil);

            DARI PHP ARRAY

            // DARI PHP
            $result =  mysqli_query($conn, "SELECT date_format(tanggal, '%d') as pTgl, 
            					SUM(reg) as pReg, 
            					SUM(reproc) as pReproc 
            				FROM dprod_datetime 
            				WHERE MONTH(tanggal)=12 AND year(tanggal)=2016
            				GROUP BY pTgl 
            				ORDER BY tanggal ASC"
            			);
            
            while ($r = mysqli_fetch_array($result)) {
                $preg[] = $r['pReg'];
            }
            $min = MIN($preg);
            $max = MAX($preg);
            print_r($preg);

            Hindari penggunaan mysql_query, gunakan mysqli_query, karena di php versi terbaru mysql_query sudah dihapus

          • Mas Agus,

            Terimakasih sudah bisa, berfungsi dengan baik dan bisa integrasi dengan grafik.
            cuma maaf ada 1 lagi nih,

            dari mas agus diatas, untuk menampilkan Max & Min sudah ok.
            CUma klo misal saya ingin mengambil tanggal dan nilai max . saya coba tambahkan select tanggal ga berhasil.
            Jadi klo yang nilai maksimun tanggal 5 Desember 2016. saya mau ambil tanggal nya & nilai maks nya.

            ------------------
            Tabel :
            ID	|tanggal                |reg_qty	  |rep_qty
            37	|2016/11/30 21:11	|2323	          |1221
            30	|2016/12/01 0:00	|6554	          |45454
            2	|2016/12/02 22:09	|15518	          |400
            3	|2016/12/04 20:17	|1176	          |600
            38	|2016/12/04 22:00	|1222	          |342
            39	|2016/12/05 5:29	|456	          |5677
            4	|2016/12/05 17:00	|10834	          |50
            ------------------------
            

            Terimakasih atas bantuan dan ilmunya mas agus.

          • Sama sama mas…
            Coba pakai query ini:

            SELECT tanggal, reg 
            FROM `dprod_datetime` 
            WHERE reg = (SELECT MIN(reg) 
            		FROM dprod_datetime
            		)

            Hasil:

            +---------------------+------+
            | tanggal             | reg  |
            +---------------------+------+
            | 2016-12-05 03:17:13 | 1176 |
            +---------------------+------+
          • Mas,
            Klo ada where Bulan dan Tahun dimana menambahkannya. sya coba2 cuma bisa keluar tahun aja.
            Jadi saya mau filter bulan 12 tahun 2015.
            Jadi QTYKG diambil max + di sum by tanggal, jadi diambil nilai max dalam sebulan dari tgl tsb.
            jadi hasilnya tanggal sekian, nilai max/min sekian.

            Terimakasih bnyak mas,

          • Scriptnya seperti apa mas? apa maksudnya seperti ini:

            SELECT tanggal, reg 
            FROM `dprod_datetime` 
            WHERE reg = (  SELECT MIN(reg) 
            		FROM dprod_datetime
                    	WHERE MONTH(tanggal) = 12 AND YEAR(tanggal) = 2016
            	    )

            Atau nilai min per bulan?

            SELECT MONTH(tanggal) AS bulan, tanggal, reg 
            FROM `dprod_datetime` 
            WHERE reg IN (  SELECT MIN(reg) 
            		FROM dprod_datetime
                    	GROUP BY MONTH(tanggal), YEAR(tanggal)
            	    )

            Hasil:

            +-------+---------------------+-------+
            | bulan | tanggal             | reg   |
            +-------+---------------------+-------+
            |    12 | 2016-12-05 03:17:13 |  1176 |
            |    11 | 2016-11-01 02:10:10 | 16243 |
            +-------+---------------------+-------+
          • Maaf mas agus membuat bingung,

            Jadi begini. ini tabel contoh Desember 2016.

            					
            idprod	|tanggal  	        |reg	|reproc
            30	|2016/12/01 0:00	|6554	|45454
            2	|2016/12/02 22:09	|15518	|400
            3	|2016/12/04 20:17	|1176	|600
            38	|2016/12/04 22:00	|1222	|342
            39	|2016/12/05 5:29	|456	|5677
            4	|2016/12/05 17:00	|10834	|50
            

            —————————————–
            Itu kan ada tanggal sama, sya ingin mengambil Tanggal berapa dan nilai max nya, (nilai max di sum by tanggal).
            jadi dalam 1 bulan hasil yg mau dicapai seperti dibawah ini.

            Hasil.

            ==============
            id	|hari	         |max_pReg |
            2	|2016-12-01	 |15518    |
            

            =====

            Dari hasil diatas permasalahannya adalah, hari yang ditampilkan tidak match dengan nilai tertinggi, harusnya nilai max 15518 adalah tanggal 2016-12-02. ini malah tanggal lain. sya cob

            === SCRIPT QUERY yang sya jalankan
            # SELECT tb_temp.id, tb_temp.hari, MAX(pReg) AS max_pReg
            FROM ( SELECT idperiod as id, date(tanggal) hari, date_format(tanggal, ‘%d’) as pTgl, SUM(reg) as pReg, SUM(reproc) as pReproc
            FROM dprod_datetime WHERE MONTH(tanggal)=12 AND year(tanggal)=2016 GROUP BY pTgl ORDER BY tanggal ASC ) AS tb_temp.

            ===== tabel nya

            (CREATE TABLE IF NOT EXISTS `dprod_datetime` (
              `idprod` int(10) NOT NULL,
              `tanggal` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
              `bulan` varchar(15) NOT NULL,
              `reg` int(20) NOT NULL,
              `reproc` int(20) DEFAULT NULL,
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
            )
            

            Mohon pencerhannya mas agus, mwtur suwun sanget.

          • Coba query ini mas:

            SELECT id_prod, tanggal, reg 
            FROM dprod_datetime
            WHERE reg = (  SELECT MAX(reg) 
            		FROM (	SELECT SUM(reg) AS reg
            			FROM dprod_datetime
            			WHERE MONTH(tanggal) = 12 AND YEAR(tanggal) = 2016
            			GROUP BY tanggal
            		) as tmp
                        )

            Hasil:

            +---------+---------------------+-------+
            | id_prod | tanggal             | reg   |
            +---------+---------------------+-------+
            |       2 | 2016-12-02 22:09:00 | 15518 |
            +---------+---------------------+-------+
          • Mas agus,

            Terimakasih jawaban2nya dan ilmunya., sudah bisa.

            Mas share tentang upload / insert file excel ke database.
            Terimakasih

            Aang

          • Sama sama mas…
            Iya mas, semoga bisa sempat merealisasikannya.
            Intinya ada dua cara mas:
            1. Baca file excel dengan library excel reader kemudian susun query insert, selanjutnya eksekusi query tersebut.
            2. Jika file sangat besar, hingga ratusan ribu rows, bisa disimpan dulu ke temporary file bentuk .csv kemudian gunakan statement LOAD LOCAL INFILE

          • saya mencoba dengan file bnyak berat, sampe time out, sya naikan sampe brp menit di php.ini nya.
            terus kendala lagi, data yg isinya float/decimal ga bisa input ke database dgn utuh alias dibulatkan ya?
            tks.

          • Ini file excelnya diupload pakai web mas?

            Coba di cek lagi, time outnya karena apa? Apa proses upload filenya, proses parsing data excelnya, atau proses insert datanya

            Data yang dimasukkan berapa row?

        • udah sya naikaan mas timeoutnya diatas 3menit..ehhe
          Mas bisa share tentang payrol dengan PHP?
          sya ingin sistem gaji seperti gaji pokok, tunjangan potongan2, bonus, lembur, nilai kerajinan.pph, saya googling masih blm menemukan sample yang pas..
          Kalau ada bisa dishare mas contohnya..
          hehehe.

          Suwun mas agus.

  • selamat malem mas agus….
    maaf ngganggu nich.
    mohon bantuannya ya mas

    Pemrograman menggunakan PHP
    database MySQL
    semua tipe data varchar (50)

    tabel DataKelas

    +--------+------------+------------+
    | Kelas  | Kelamin    | jumlah     |
    +--------+------------+------------+
    | 3IPA   | pria       |      19    |
    | 3IPA   | wanita     |      22    |
    | 3IPS   | pria       |      19    |
    | 3IPS   | wanita     |      22    |
    | 3IPS   | pria       |      19    |
    | 3BHS   | wanita     |      22    |
    | 3BHS   | pria       |      24    |
    | 2IPA   | pria       |      19    |
    | 2IPA   | wanita     |      22    |
    | 2IPS   | pria       |      19    |
    | 2IPS   | wanita     |      22    |
    | 2IPS   | pria       |      19    |
    | 2BHS   | wanita     |      22    |
    | 2BHS   | pria       |      24    |
    +--------+------------+------------+
    

    dari tabel DataKelas diatas saya ingin menjumlahkan dan mengelompokan data berdasarkan jenis kelamin dan hasil penjumlahan dimasukan pada tabel JenisKelamin dibawah ini

    tabel JenisKelamin

    +------------+--------+------------+
    |jurusan     | pria   | wanita     |
    +------------+--------+------------+
    | IPA        | ...    |  ...       |
    | IPS        |        |            |
    | BHS        |        |            |
    +------------+--------+------------+
    

    mohon petunjuk dan sarannya
    bagaimana script PHP nya untuk menyelesaikan permasalahan saya tersebut, sudah dua malem saya otak atik belum ketemu juga

    atas bantuannya saya ucapkan terimakasih 🙂

    • Intinya buat query sehingga format data sesuai dengan format tabel yang ingin dimasukkan datannya mas.
      Query:

      SELECT kelas, 
      	COUNT(IF(kelamin = "pria", 1, NULL)) AS pria,
      	COUNT(IF(kelamin = "wanita", 1, NULL)) AS wanita
      FROM DataKelas
      GROUP BY kelas

      Hasil:

      +-------+------+--------+
      | kelas | pria | wanita |
      +-------+------+--------+
      | 2BHS  |    1 |      1 |
      | 2IPA  |    1 |      1 |
      | 2IPS  |    2 |      1 |
      | 3BHS  |    1 |      1 |
      | 3IPA  |    1 |      1 |
      | 3IPS  |    2 |      1 |
      +-------+------+--------+

      Selanjutnya tinggal gunakan statement INSERT intuk memasukkan data hasil query tersebut

      INSERT INTO JenisKelamin
      SELECT kelas, 
      	COUNT(IF(kelamin = "pria", 1, NULL)) AS pria,
      	COUNT(IF(kelamin = "wanita", 1, NULL)) AS wanita
      FROM DataKelas
      GROUP BY kelas

      Untuk kode PHPnya tinggal jalankan query diatas mas:

      <?php
      $conn = mysqli_connect('localhost', 'root', '', 'test');
      $query = mysqli_query($conn,
      			"INSERT INTO JenisKelamin
      			SELECT kelas, 
      				COUNT(IF(kelamin = 'pria', 1, NULL)) AS pria,
      				COUNT(IF(kelamin = 'wanita', 1, NULL)) AS wanita
      			FROM DataKelas
      			GROUP BY kelas"
      		);
      • maaf mas maksud pertanyaan saya adalah menjumlahkan semua jumlah siswa laki2 dan jumlah semua perempuan berdasarkan jurusan (IPA, IPS & BHS) kemudian hasil penjumlahannya di masukan pada tabel yg lain.

        tabel DataKelas

        +--------+------------+------------+
        | Kelas  | Kelamin    | jumlah     |
        +--------+------------+------------+
        | 3IPA   | pria       |      19    |
        | 3IPA   | wanita     |      22    |
        | 3IPS   | pria       |      19    |
        | 3IPS   | wanita     |      22    |
        | 3IPS   | pria       |      19    |
        | 3BHS   | wanita     |      22    |
        | 3BHS   | pria       |      24    |
        | 2IPA   | pria       |      19    |
        | 2IPA   | wanita     |      22    |
        | 2IPS   | pria       |      19    |
        | 2IPS   | wanita     |      22    |
        | 2IPS   | pria       |      19    |
        | 2BHS   | wanita     |      22    |
        | 2BHS   | pria       |      24    |
        +--------+------------+------------+
        

        yang di jumlahkan adalah
        19 org pria di kelas 3IPA dan 19 org pria di kelas 2IPA hasilnya 38 dan kemudian dimasukan ke tabel jenis kelamin.
        22 org wanita di kelas 3IPA dan 22 org wanita di kelas 2IPA hasilnya 44 dan kemudian dimasukan ke tabel jenis kelamin.

        hasil penjumlahan di tabel JenisKelamin

        +------------+--------+------------+
        |jurusan     | pria   | wanita     |
        +------------+--------+------------+
        | IPA        | 38     |  44        |
        | IPS        |        |            |
        | BHS        |        |            |
        +------------+--------+------------+
        

        jadi yg masih saya bingun scrip php untuk menjumlahkan 19 org pria kelas 3IPA dan 19 org pria kelas 2IPA dan hasilnya 38 dan dimasukan ke tabel JenisKelamin

        maturnuwon 🙂

        • Oh, begitu ya mas…
          Ada dua cara mas, bisa dari sisi SQL nya atau PHP nya. Karena artikel terkait dengan SQL, saya bahas dari sisi SQL ya mas:
          Pertama, karena kelas tidak memiliki ID, maka kita perlu buat data kelas dengan jurusan utama yang sama:

          SELECT CASE WHEN kelas LIKE "%IPA" THEN 'IPA'
                      WHEN kelas LIKE "%IPS" THEN 'IPS'
                      WHEN kelas LIKE "%BHS" THEN 'BHS'
                 END AS jurusan_utama,
                 kelamin, 
                 jumlah
          FROM DataKelas

          Hasilnya:

          +---------------+---------+--------+
          | jurusan_utama | kelamin | jumlah |
          +---------------+---------+--------+
          | IPA           | pria    | 19     |
          | IPA           | wanita  | 22     |
          | IPS           | pria    | 19     |
          | IPS           | wanita  | 22     |
          | IPS           | pria    | 19     |
          | BHS           | wanita  | 22     |
          | BHS           | pria    | 24     |
          | IPA           | pria    | 19     |
          | IPA           | wanita  | 22     |
          | IPS           | pria    | 19     |
          | IPS           | wanita  | 22     |
          | IPS           | pria    | 19     |
          | BHS           | wanita  | 22     |
          | BHS           | pria    | 24     |
          +---------------+---------+--------+

          Selanjutnya kita jumlahkan siswa berdasarkan jurusan utama:

          SELECT jurusan_utama, 
          	SUM(IF(kelamin = "pria", jumlah, NULL)) AS pria,
          	SUM(IF(kelamin = "wanita", jumlah, NULL)) AS wanita
          FROM (
          	SELECT CASE WHEN kelas LIKE "%IPA" THEN 'IPA'
          		    WHEN kelas LIKE "%IPS" THEN 'IPS'
          		    WHEN kelas LIKE "%BHS" THEN 'BHS'
          		END AS jurusan_utama,
          		kelamin, 
          		jumlah
          	FROM DataKelas
          ) as tbl_kelas 
          GROUP BY jurusan_utama

          Hasilnya:

          +---------------+------+--------+
          | jurusan_utama | pria | wanita |
          +---------------+------+--------+
          | BHS           |   48 |     44 |
          | IPA           |   38 |     44 |
          | IPS           |   76 |     44 |
          +---------------+------+--------+
          

          Selanjutnya kita tambahkan query untuk memasukkan data:

          INSERT INTO JenisKelamin
          SELECT jurusan_utama, 
          	SUM(IF(kelamin = "pria", jumlah, NULL)) AS pria,
          	SUM(IF(kelamin = "wanita", jumlah, NULL)) AS wanita
          FROM (
          	SELECT CASE WHEN kelas LIKE "%IPA" THEN 'IPA'
          		    WHEN kelas LIKE "%IPS" THEN 'IPS'
          		    WHEN kelas LIKE "%BHS" THEN 'BHS'
          		END AS jurusan_utama,
          		kelamin, 
          		jumlah
          	FROM DataKelas
          ) as tbl_kelas 
          GROUP BY jurusan_utama

          Untuk script PHP nya, sama dengan jawaban saya sebelumnya:

          <?php
          $conn = mysqli_connect('localhost', 'root', '', 'test');
          $query = mysqli_query($conn,
          			"INSERT INTO JenisKelamin
          			SELECT jurusan_utama, 
          				SUM(IF(kelamin = "pria", jumlah, NULL)) AS pria,
          				SUM(IF(kelamin = "wanita", jumlah, NULL)) AS wanita
          			FROM (
          				SELECT CASE WHEN kelas LIKE "%IPA" THEN 'IPA'
          						WHEN kelas LIKE "%IPS" THEN 'IPS'
          						WHEN kelas LIKE "%BHS" THEN 'BHS'
          					END AS jurusan_utama,
          					kelamin, 
          					jumlah
          				FROM DataKelas
          			) as tbl_kelas 
          			GROUP BY jurusan_utama"
          		);
  • selamat Pagi Mas agus mohon masukannya :
    saya punya Query spt berikut

    SELECT `no_penjualan`,`NIK`, `kd_item`,`bulan`,`tahun`,`jumlah`, (SELECT ROUND(AVG(`jumlah`)) FROM tbpenjualan WHERE `no_penjualan` a.`no_penjualan` – 4) AS forecast, (SELECT jumlah – forecast) As eror, (SELECT jumlah – forecast /3 ) As MAE, (SELECT eror * eror ) As MSE FROM tbpenjualan a where kd_item =’v5′

    UNION ALL

    SELECT “” AS no_penjualan,
    “” AS NIK,
    “” AS kd_item,
    “” AS bulan,
    “Grand Total” as tahun,
    SUM(`jumlah`) AS jumlah,
    SUM(‘forecast’) AS forecast,
    SUM(‘eror’) as eror,
    sum(‘MAE’)as MAE,
    sum(‘MSE’) as MSE
    FROM tbpenjualan

    hasilnya : https://s27.postimg.org/ue2altlhv/SUM.jpg

    saya bingung mau nambahin query :

    SELECT MIN(`no_penjualan`)+3 as `no_penjualan` from tbpenjualan

    masud saya itu biar nanti hasil Grand totalnya itu hanya menghitung dari Apr sd des dstnya aja.
    terima kasih.

  • met sore mas agus, maaf ganggu nih…
    mohon bantuannya ya mas

    ada 4 tabel:

    Table name : port_bg			
    bg_id | bg_tugboat | bg_tongkang | mv_id
    1	Jhoni 1	     Liana 1	     1
    2	Jhoni 2	     Liana 2	     1
    3       Jhoni 3	     Liana 3	     1
    4	Jhoni 4	     Liana 4         1
    5	Jhoni 5	     Liana 5	     1
    
    Table nama : port_conveyor		
    bg_id |conv_name | conv_tonase
    1	Conveyer 1	2.000
    1	Conveyer 2	1.000
    1	Conveyer 3	3.000
    2	Conveyer 4	3.000
    2	Conveyer 5	2.500
    3	conveyor 2	1.500
    3	conveyor 3	1.750
    3	conveyot 4	2.250
    3	conveyor 5	1.500
    4	Bangun Artha	7.500
    5	Bangun Artha	4.500
    5	Conveyor 1	4.000
    
    Table name : port_mv			
    mv_id | mv_date     | mv_name           | mv_shipper
    1	12/01/2012    MV. EASTERN VIEW	  jaya abadi
    
    Table name : port_mv_detail				
    mv_id_detail | mv_id | no_urut| bg_id |	mv_cargo
    1	        1	  1	  3	7.000
    2               1	  2	  2	5.500
    3	        1	  3	  4	7.500
    4	        1	  4	  5	8.000
    5	        1	  5	  1	6.000
    

    dari tabel diatas saya mau buat perintah sql untuk menampilkan data seperti ini:

    mv_date          mv_name	        mv_shipper	tugboat1    tongkang1	bg_cargo1	mv_cargo1	Return1
    12/01/2012	 MV. EASTERN VIEW	jaya abadi	Jhoni 3	    Liana 3	7.000        	7.000	        0
    

    note: bg_cargo1 di ambil dari summary conv_tonase yang ada pada table port_conveyor
    return1 didapat dari summary bg_cargo dikurang mv_cargo

    mohon pencerahannya mas agus 🙂

    • Coba pakai query ini mas:

      SELECT pm.mv_id, mv_date, mv_name, mv_shipper, bg_tugboat, bg_tongkang, 
      		SUM(conv_tonase) as bg_cargo1, mv_cargo, SUM(conv_tonase) - mv_cargo AS return1
      FROM port_mv pm
      LEFT JOIN port_mv_detail USING(mv_id)
      LEFT JOIN port_bg USING(bg_id)
      LEFT JOIN port_conveyor USING(bg_id)
      WHERE bg_id = 3

      Hasil:

      +-------+------------+------------------+------------+------------+-------------+-----------+----------+---------+
      | mv_id | mv_date    | mv_name          | mv_shipper | bg_tugboat | bg_tongkang | bg_cargo1 | mv_cargo | return1 |
      +-------+------------+------------------+------------+------------+-------------+-----------+----------+---------+
      |     1 | 12/01/2012 | MV. EASTERN VIEW | jaya abadi | Jhoni3     | Liana3      |      7000 |     7000 |       0 |
      +-------+------------+------------------+------------+------------+-------------+-----------+----------+---------+
  • kalau mau menambah seperti ini:

    mv_date|mv_name|mv_shipper|tugboat1|tongkang1|bg_cargo1|mv_cargo1|Return1|tugboat2|tongkang2|bg_cargo2|mv_cargo2|Return2|
    12/01/2012 MV. EASTERN VIEW Arutmin Jhoni 3 Liana 3 7.000 7.000 0 Jhoni 2 Liana 2 5.500 5.500 0

    sebenarnya sampai 5 mas agus, tapi karena kepanjangan jd ambil sampai 2 sbg contoh.. kalau begini kira2 bagaimana query nya mas agus… maaf ngerepotin mas agus

  • kalo menambah satu kolom lagi buat rangking gimana, saya sudah coba berbagai query untuk disatukan dengan query diatas kok gk ada yang cocok ya? bagaimana ya susunan querynya

      • SELECT ID_SISWA, NAMA, 
        	SUM(IF(SEMESTER = 1 AND ID_KELAS='$idkelas', NILAI_AKHIR, 0)) AS 'Semester 1',
        	SUM(IF(SEMESTER = 2 AND ID_KELAS='$idkelas', NILAI_AKHIR, 0)) AS 'Semester 2',
        	SUM(NILAI_AKHIR) AS TOTAL
        FROM nilai_akhir
        LEFT JOIN profilsiswa ON profilsiswa.ID_AKUN_SISWA=nilai_akhir.ID_SISWA
        GROUP BY ID_SISWA ORDER BY TOTAL DESC
        

        datanya dibawah ini , agak berantakan, gunakan phpmyadmin

        CREATE TABLE `nilai_akhir` (
          `ID_NILAI_TOTAL` int(11) NOT NULL,
          `ID_SISWA` int(11) NOT NULL,
          `ID_KELAS` int(11) NOT NULL,
          `ID_MAPEL` int(11) NOT NULL,
          `STATUS_MAPELA` varchar(20) NOT NULL,
          `STATUS` varchar(20) NOT NULL,
          `SEMESTER` int(11) NOT NULL,
          `NILAI_AKHIR` int(11) NOT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
        
        --
        -- Dumping data for table `nilai_akhir`
        --
        
        INSERT INTO `nilai_akhir` (`ID_NILAI_TOTAL`, `ID_SISWA`, `ID_KELAS`, `ID_MAPEL`, `STATUS_MAPELA`, `STATUS`, `SEMESTER`, `NILAI_AKHIR`) VALUES
        (1, 4, 1, 1, 'Mata Pelajaran', 'Nilai Umum', 1, 100),
        (2, 4, 1, 1, 'Mata Pelajaran', 'Nilai Praktik', 1, 85),
        (3, 5, 1, 1, 'Mata Pelajaran', 'Nilai Umum', 1, 100),
        (4, 5, 1, 1, 'Mata Pelajaran', 'Nilai Praktik', 1, 80),
        (5, 4, 1, 2, 'Mata Pelajaran', 'Nilai Umum', 1, 80),
        (6, 5, 1, 2, 'Mata Pelajaran', 'Nilai Umum', 1, 100),
        (7, 4, 1, 2, 'Mata Pelajaran', 'Nilai Praktik', 1, 80),
        (8, 5, 1, 2, 'Mata Pelajaran', 'Nilai Praktik', 1, 100),
        (9, 4, 1, 3, 'Mata Pelajaran', 'Nilai Praktik', 1, 100),
        (10, 5, 1, 3, 'Mata Pelajaran', 'Nilai Praktik', 1, 75),
        (11, 4, 1, 3, 'Mata Pelajaran', 'Nilai Umum', 1, 100),
        (12, 5, 1, 3, 'Mata Pelajaran', 'Nilai Umum', 1, 78),
        (13, 6, 1, 1, 'Mata Pelajaran', 'Nilai Umum', 1, 60),
        (14, 6, 1, 1, 'Mata Pelajaran', 'Nilai Praktik', 1, 100);
        
        • Saya coba hilangkan join nya ya mas, soalnya tabel profilsiswa tidak ada.

          Apa yang dimaksud seperti ini?

          SELECT ID_SISWA,
                  SUM(IF(SEMESTER = 1 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 1',
                  SUM(IF(SEMESTER = 2 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 2',
                  SUM(NILAI_AKHIR) AS TOTAL,
                  @row_num := @row_num + 1 AS rangking
          FROM nilai_akhir, (SELECT @row_num := 0) AS nilai_awal
          GROUP BY ID_SISWA ORDER BY TOTAL DESC

          Hasil:

          +----------+------------+------------+-------+----------+
          | ID_SISWA | Semester 1 | Semester 2 | TOTAL | rangking |
          +----------+------------+------------+-------+----------+
          |        4 |        545 |          0 |   545 |        1 |
          |        5 |        533 |          0 |   533 |        2 |
          |        6 |        160 |          0 |   160 |        3 |
          +----------+------------+------------+-------+----------+
          • waktu saya copy paste sintax nya kok ada yang error ya mas??

            #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘LIMIT 0, 25’ at line 6

            trimakasih mas sebelumnya udah mau bantu,

          • Sama sama mas….

            Coba dicek lagi mas, mungkin ada kesalahan penulisan syntax di akhir query atau tipe data yang tidak sesuai?
            Coba di break dan dijalankan lagi query nya satu per satu dan diperhatikan errornya pada bagian query yang mana.

          • Mencobanya di phpMyAdmin ya mas? phpMyAdmin memang kadang seperti itu, dia menambahkan klausa LIMIT untuk membatasi hasil query yang ditampilkan namun terkadang penambahannya tidak pas pada tempatnya, sehingga malah error.

            Untuk mengatasinya, coba dibalik urutannya mas, menjadi:

            SELECT ID_SISWA,
                    SUM(IF(SEMESTER = 1 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 1',
                    SUM(IF(SEMESTER = 2 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 2',
                    SUM(NILAI_AKHIR) AS TOTAL,
                    @row_num := @row_num + 1 AS rangking
            FROM (SELECT @row_num := 0) AS nilai_awal, nilai_akhir
            GROUP BY ID_SISWA ORDER BY TOTAL DESC
          • sudah bisa mass, dengan query yang dibalik, trimakasih mas,, penjelasan anda sangat sangat membantu, ku baru tahu juga ada pengaruh menggunakan phpadmin

          • ada kasus lagi mas,

            ketika nilai total saya hapus kok malah error ya, tujuannya saya ingin memunculkan rangking disetiap semesternya, mohon bantuannya,

            sebenarnya @row_num := @row_num itu apa mas?? bisa dijelaskan sedikit,??

          • Ada contoh lengkapnya hasil yang diinginkan seperti apa mas?
            Query yang error seperti apa?

            Sebenarya kita hanya membuat nomor urut saja mas. kita gunakan variabel bernama row_num, untuk menulis variabel, gunakan @, untuk memberi nilai, gunakan :=

            Ketika meng eksekusi query, pertama2 MySQL akan membaca bagian FROM, pada bagian tersebut kita definisikan variabel @row_num dengan nilai 0, setelah nilai variabel tersimpan, selanjutnya ketika mengeksekusi statemen SELECT, maka nilai @row_num akan selalu bertambah satu

            Pendefinisian variabel didalam select untuk memudahkan agar menjadi satu statemen, contoh lain:

            SET @rangking := 0;
             
            SELECT ID_SISWA,
                    SUM(IF(SEMESTER = 1 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 1',
                    SUM(IF(SEMESTER = 2 AND ID_KELAS=1, NILAI_AKHIR, 0)) AS 'Semester 2',
                    SUM(NILAI_AKHIR) AS TOTAL,
                    @rangking := @rangking + 1 AS rangking
            FROM nilai_akhir
            GROUP BY ID_SISWA ORDER BY TOTAL DESC
          • Selamat malam mas Agus, saya nyoba coding seperti ini

            SELECT no_fad,
                    SUM(IF(kd_transaksi = 'T' , jml_transaksi, 0)) AS 'tarik',
                    SUM(IF(kd_transaksi = 'S' , jml_transaksi, 0)) AS 'setor',
                    SUM(jml_transaksi) AS total   
            FROM ss GROUP BY no_fad
            

            hasilnya

            no_fad	tarik	setor	total
                1	1000	2000	3000
                2	 500	1000    1500
            

            yang saya butuhkan total itu menjadi setor – tarik jadi seperti ini:

            no_fad	tarik	setor	total
               1	1000	 2000	1000
               2	 500	  1000	500
            

            mohon bantuannya mas, apa yang harus dirubah dari koding saya ya? terima kasih sebelumnya.

          • Coba ini mas:

            <pre>
            SELECT no_fad,
                    SUM(IF(kd_transaksi = 'T' , jml_transaksi, 0)) AS 'tarik',
                    SUM(IF(kd_transaksi = 'S' , jml_transaksi, 0)) AS 'setor',
                    SUM(IF(kd_transaksi = 'S' , jml_transaksi, 0)) - SUM(IF(kd_transaksi = 'T' , jml_transaksi, 0)) AS total   
            FROM ss GROUP BY no_fad
            </pre>
  • pak saya ada kasus penjumlahan di query , tapi ko yg proses bervariabel hasilnya NULL di subtotal dan pajak

    SELECT username,
    nama,
    SUM(IF( jenis = ‘trx1’, bayar, 0)) AS jml_trx1,
    SUM(IF( jenis = ‘trx2’, bayar, 0)) AS jml_trx2,
    SUM(IF( jenis = ‘trx3’, bayar, 0)) AS jml_trx3,
    SUM(IF( jenis = ‘trx4’, bayar, 0)) AS jml_trx4,
    @total:=SUM(bayar) AS TOTAL,
    @jml:= SUM(bayar) * 0.02 AS jml_bag1,
    @sub1:=@total-@jml1 AS subtotal,
    $pajak:=@sub1*0.01 AS pajak

    FROM transaksi
    LEFT JOIN member USING(username)
    GROUP BY username

      • username nama jml_trx1 jml_trx2 jml_trx3 jml_trx4 TOTAL jml_bag1 subtotal pajak
        BK1000001 MASTER 2120700 375000 47000 0 2542700 50854 NULL NULL
        BK1000002 SITI AISYAH 267500 6000 0 0 273500 5470 NULL NULL
        BK1000003 SITI HARYATI 242500 6000 0 0 248500 4970 NULL NULL
        BK1000004 EUIS ALTHEA 187500 6000 0 0 193500 3870 NULL NULL
        BK1000005 KEN AROK 245000 6000 0 0 251000 5020 NULL NULL

        yg diinginkan subtotal berasal dari TOTAL-jml_bag1 dan pajak 10 dari subbtotal

          • itu data hasil transaksi kurang lebih datanya sepert ini

            username bayar jenis
            BK1000033 12500 trx1
            BK1000001 125000 trx1
            BK1000002 125000 trx1
            BK1000001 62500 trx2
            BK1000003 125000 trx2
            BK1000002 62500 trx3
            BK1000001 25000 trx4

          • Jika mengisi nilai variabel dari fungsi agregasi maka hasilnya menjadi tidak pas mas, karena penggabungan row nya tidak sinkron dengan pendefinisian variabel, coba bandingkan yang ini:

            SELECT username,
            	SUM(IF( jenis = 'trx1', bayar, 0)) AS jml_trx1,
            	SUM(IF( jenis = 'trx2', bayar, 0)) AS jml_trx2,
            	SUM(IF( jenis = 'trx3', bayar, 0)) AS jml_trx3,
            	SUM(IF( jenis = 'trx4', bayar, 0)) AS jml_trx4,
            	SUM(bayar) AS TOTAL,
            	ROUND ( SUM(bayar) * 0.02 ) AS jml_bag1,
            	ROUND ( SUM(bayar)-(SUM(bayar) * 0.02) ) AS subtotal,
            	ROUND ( (SUM(bayar)-(SUM(bayar) * 0.02)) * 0.01 ) AS pajak
            FROM transaksi
            GROUP BY username

            Hasil:

            +-----------+----------+----------+----------+----------+--------+----------+----------+-------+
            | username  | jml_trx1 | jml_trx2 | jml_trx3 | jml_trx4 | TOTAL  | jml_bag1 | subtotal | pajak |
            +-----------+----------+----------+----------+----------+--------+----------+----------+-------+
            | BK1000001 |   125000 |    62500 |        0 |    25000 | 212500 |     4250 |   208250 |  2083 |
            | BK1000002 |   125000 |        0 |    62500 |        0 | 187500 |     3750 |   183750 |  1838 |
            | BK1000003 |        0 |   125000 |        0 |        0 | 125000 |     2500 |   122500 |  1225 |
            +-----------+----------+----------+----------+----------+--------+----------+----------+-------+

            Sama ini:

            SELECT username,
            	bayar,
            	@total := bayar AS total,
            	@jml:= ROUND(bayar * 0.02) AS jml_bag1,
            	@sub1 := @total-@jml AS subtotal,
            	@pajak:= ROUND(@sub1*0.01) AS pajak
            FROM transaksi

            Hasil:

            +-----------+--------+--------+----------+----------+-------+
            | username  | bayar  | total  | jml_bag1 | subtotal | pajak |
            +-----------+--------+--------+----------+----------+-------+
            | BK1000001 | 125000 | 125000 |     2500 |   122500 |  1225 |
            | BK1000002 | 125000 | 125000 |     2500 |   122500 |  1225 |
            | BK1000001 |  62500 |  62500 |     1250 |    61250 |   612 |
            | BK1000003 | 125000 | 125000 |     2500 |   122500 |  1225 |
            | BK1000002 |  62500 |  62500 |     1250 |    61250 |   612 |
            | BK1000001 |  25000 |  25000 |      500 |    24500 |   245 |
            +-----------+--------+--------+----------+----------+-------+
  • Gan mohon bantuannya saya memiliki tabel bernama biodata_wni yang berisi beberapa field diantaranya NIK | NAMA | TANGGAL_LHR | JENIS_KLMIN | AKTA_LHR | NO_AKTA_LHR | FLAG_STATUS. Bagai mana menampilkan jumlah dan prosentase kepemilikan akta dan tidak memiliki berdasarkan jenis kelamin. Gimana memodifikasi script jika scripnya seperti ini :

    select
    cc no
    ,case when cc is null then ‘JUMLAH’ else
    getnamakec(cc,ck,cp) end kecamatan
    ,sum(ja)+sum(jt) as jml_00_18
    ,sum(ja)jml_ada,round(sum(ja)*100/(psn),2) psn_ada
    ,sum(jt)jml_tdk,round(sum(jt)*100/(psn),2) psn_tdk
    ,” keterangan
    from
    (
    select
    no_prop cp,no_kab ck,no_kec cc
    ,case when akta_lhr in(2) then 1 else 0 end ja
    ,case when akta_lhr in(1) then 1 else 0 end jt
    ,(select count(*)
    from biodata_wni where flag_status in(‘0’)
    and floor(months_between(‘1-JAN-2012’,tgl_lhr)/12)
    between 0 and 18
    ) psn
    from biodata_wni where flag_status in(‘0′)
    and floor(months_between(’30-JUN-2016’,tgl_lhr)/12)
    between 0 and 18
    )
    group by
    grouping sets((cp,ck,cc,psn)
    ,(cp,ck,psn)
    )
    order by 1;

    Terima kasih sebelumnya semoga mendapat jawaban

      • Untuk contoh data kolom nama berisi nama, tanggal_lhr berisi ddmmyyyy, jenis_klmin berisi angka 1 untuk laki2 dan 2 untuk perempuan, akta_lhr berisi angka 1 jika tdk memiliki dan 2 memiliki, no_akta_lhr berisi nomor akta, flagstatus berisi angka 0. Dan untuk outputnya NO | KECAMATAN | JUMLAH LAKI2 | JUMLAH PEREMPUAN | KETERANGAN. dibawah kolom jumlah laki2 ada sub kolom lagi ADA AKTA | % ADA | TDK ADA AKTA | % TDK ADA . Begitu pula pada kolom jumlah perempuan. Maaf gan nulisnya melalui handphone jadi ribet dah

        Lupa gan dalam script itu ada 0 and.18 maksunya filter untuk usia 0 s/d 18 tahun saja

        • Apa maksudnya seperti ini mas?

          nama  | tanggal_lhr | jenis_klmin | akta_lhr | no_akta_lhr | flagstatus
          nama  | 10071988    | 1           | 1        | 12          | 0
          nama2 | 12011990    | 2           | 2        | 22          | 0
          

          Output:

           NO | KECAMATAN |              JUMLAH LAKI2                   |                 JUMLAH PEREMPUAN            | KETERANGAN |
              |           | ADA AKTA | % ADA | TDK ADA AKTA | % TDK ADA | ADA AKTA | % ADA | TDK ADA AKTA | % TDK ADA |            |
          

          Menghitung persentasenya seperti apa mas? apa dibagi apa?

  • maap pak gimana ya mencari total nilai transaksi per bulan pada tahun tertentu, saya sudah coba cara bapak sebelumnya tetap ga bisa

  • Assalamualaikum pak agus saya ingin meminta solusi bagaimana jika menggabungkan antara count dengan max? Jadi, pertama saya ingin meng-cout jumlah record yg value-nya adalah x, lalu saya ingin max var x tersebut.

    id| nama_panggilan | jenis_klmin | kehadiran | tanggal |
    1 | Lorem | 1 | 3 | 2017-02-03 |
    2 | Ipsum | 2 | 4 | 2017-02-03 |
    3 | Lorem | 1 | 2 | 2017-02-04 |
    4 | Ipsum | 2 | 1 | 2017-02-04 |
    5 | Lorem | 1 | 5 | 2017-03-01 |
    6 | Ipsum | 2 | 3 | 2017-03-02 |

    Nah, si var x itu bisa berisi 4 /3 /2. Begitu kurang lebih yg ingin saya tanya kan pak hehe
    Terima Kasih sebelumnya

    Wassalamualaikum …

  • Saya punya 4 Tabel
    anggota (kode_anggota, nama_anggota)
    wajib(kode_anggota, masuk, keluar)
    manasuka(kode_anggota, masuk, keluar)
    pokok(kode_anggota, masuk, keluar)
    Bagaimana caranya kalau saya ingin menampilkan data dengan urutan :
    (kode_anggota, nama_anggota, sum(wajib.masuk-wajib.keluar), sum(manasuka.masuk–manasuka.keluar), sum(pokok.masuk–pokok.keluar), jumlah (sum(wajib.masuk–wajib.keluar) + sum(manasuka.masuk–manasuka.keluar) + sum(pokok.masuk–pokok.keluar)). Terima kasih

    • Secara umum, gunakan JOIN mas, misal:

      SELECT kode_anggota, nama_anggota, 
      	SUM(wajib.masuk-wajib.keluar), 
      	SUM(manasuka.masuka-manasuka.keluar), 
      	SUM(pokok.masuk–pokok.keluar), 
      	SUM(wajib.masuk-wajib.keluar) 
      		+ SUM(manasuka.masuk-manasuka.keluar) 
      		+ SUM(pokok.masuk-pokok.keluar)
      		AS jumlah
      FROM anggota
      LEFT JOIN wajib USING(kode_anggota)
      LEFT JOIN manasuka USING(kode_anggota)
      LEFT JOIN pokok USING(kode_anggota)

      Akan lebih mudah menjawabnya jika ada contoh tabel data dan output tabel yang diinginkan mas…

  • mau nanya mas kalo misalkan saya punya data seperti ini :

    | nama | tgl trf    | jml trf |
    | Budi | 2017-03-31 | 43000 |
    | Budi | 2017-04-01 | 45000 |
    | Budi | 2017-04-05 | 50000 |
    | Iwan | 2017-03-30 | 43000 |
    | Iwa n| 2017-03-31 | 43000 |
    

    Pengen jadi seperti ini gimna ya mas

    | nama    | tgl trf    | jml trf |
    | Budi    | 2017-03-31 | 43000 |
    | ------  | 2017-04-01 | 45000 |
    | ------  | 2017-04-05 | 50000 |
    TOTAL    -----------    138000
    | Iwan    | 2017-03-30 | 43000 |
    | ------- | 2017-03-31 | 43000 |
    TOTAL   -----------      86000 
    TOTAL KES ---------     224000
    

    Terimaksih

  • siang pak,, jika ingin menjumlahkan hasil data yang dipangkatkan dalam satu field itu gmna ya pak..?
    misal dalam field c1 ada data nilai 2,3,4 dan n (ketika data diperbarui atau ditambah).. nah gimana caranya membuat perhitungan (2^2)+(3^2)+(4^2)+(n^2).. mohon pencerahannya pak…

      • berarti klau ingin mencari hasil jumlah dari (2^2)+(3^2)+(4^2)+(n^2) menggunakan SELECT sum(POW(c1, 2)) FROM tabel gitu pak?? krna saya coba sum(POW(c1, 2)) hasilnya tidak sama dengan menggunakan excel. bisa dikasih contoh pak..?

        dan tanya lagi pak kenapa kalau saya menggunakan coding ini $d1 = max (array($c1)); kok hasilnya gak keluar sesuai data pak?? padahal hasil dari variabel $c1 itu adalah 0.002, 0.002, 0.01, 0.002, 0.006 ,n. seharusnya itu kan yg muncul 0.01 krna paling besar, tp hasilnya yg muncul malah 0.006 pak,, saya ganti dari max ke min pun ya tetap 0.006 hasilnya,,mohon pencerahannya pak,,

        • mohon maaf bapak agus,,untuk maslah yang pertama sudah beres ternyata memang dtambah sum,,

          dan mksud pertanyaan saya yang kedua itu kan $c1 mrupakan hasil kalkulasi dari sum(POW(c1, 2)) itu td dengan data lain pak,,kan otomatis datanya ya akan banyak sesuai jumlah baris pada field,, jadi saya ingin mencari nilai maksimal dari $c1 itu dan menggunakan coding $d1 = max (array($c1));,,tp hasilnya kok tetep meskipun dibuat min jg,,

  • hh mohon maaf bapak agus,,gini lo maksd saya,,

    $crsum = mysql_query(“SELECT sum(pow(c1,2)) as sumK1 FROM nilaicpj”);
    $sum = mysql_fetch_array($crsum);

    $kaa1 = round($dt4[‘c1’]/sqrt($sum3[‘sumK1’]),2); // ini ditampilkan ditabel
    $ba1 = round(($kaa1*0.467),2); // ini ditampilkan ditabel
    $c1 = round(($ba1*$rata1),4); // ini ditampilkan ditabel
    $d1 = max (array($c1));

    nah untuk mencari nilai maximum dr hasil kalkulasi itu kok gak bisa ya pak,, kan seharusnya data di $c1 itu banyak data krna hasil kalkukasi dr tabel nilaicpj pada field c1,,inginnya diambil nilai maximal.nya pak,,mohon pencerahaanya,,

    • Coba sampple tabel c1 nya mas seperti apa?
      Kodenya ngga komplet ya mas? banyak variable baru seperti $dt4[‘c1’], $sum3[], tidak tahu asalnya dari mana. coba contoh datanya seperti apa dan output yang diinginkan seperti apa?

      • ini pak tabelnya dr db dan ditampilkan sperti ini juga di php ;

        |c1 | c2 | c3  | c4  |
        |a1 | 3  | 5   | 1   |
        |a2 | 3  | 5   | 5   |
        |a3 | 3  | 5   | 5   |
        |a4 | 1  | 3   | 3   |
        |a5 | 3  | 5   | 1   |
        

        kemudian dikalkulasi dimana sesuai rumus 3/akar dr ((3^2)+(3^2)+(3^2)+(1^2)+(3^2)) yg hasilnya 0,49 ditaruh di baris a1 dan kolom c1,dst,
        ini berhasil dg coding $crsum = mysql_query(“SELECT sum(pow(c1,2)) as sumK1 FROM nilaicpj”);
        $sum = mysql_fetch_array($crsum);
        $kaa1 = round($dt4[‘c1’]/sqrt($sum3[‘sumK1’]),2);
        yg mana $dt4[‘c1’] untuk menampilkan data asli c1 dan $sum3[‘sumK1’]) untuk memanggil sum(pow(c1,2)).
        kemudian ditampilkan jadi seperti ini ;

        |c1|c2  |c3  |c4  |
        |a1|0,49|0,47|0,16|
        |a2|0,49|0,47|0,47|
        |a3|0,49|0,47|0,47|
        |a4|0,16|0,49|0,49|
        |a5|0,49|0,47|0,16|
        |sum|  ?|  ? | ?  |
        |max|  ?|  ? | ?  |
        |min|  ?|  ? | ?  |
        

        nah untuk menampilkan nilai max,min dan sum nya gmna pak??,,sedangkan data a1-a5 itu nanti bisa bertambah a6 a7 dsb dan jg bisa berkurang.,mohon pencerahannya pak agus,,,

          • kan data awal a4c1 = 1 pak,,jd dihitung dg rumus 1/akar((3^2)+(3^2)+(3^2)+(1^2)+(3^2)+(n)),,begitu jg dg data a4c2 = 3, dan dihitung dg rumus 3/akar((5^2)+(5^2)+(5^2)+(3^2)+(5^2)+(n))

            maaf tabel saya salah,,c4 tu tidak ada.

            |   |c1 | c2 | c3  |
            |a1 | 3 | 5  | 1   |
            |a2 | 3 | 5  | 5   |
            |a3 | 3 | 5  | 5   |
            |a4 | 1 | 3  | 3   |
            |a5 | 3 | 5  | 1   |
            

            setelah dikalkulasi,,

            |  |c1  |c2  | c3 |
            |a1|0,49|0,47|0,12|
            |a2|0,49|0,47|0,64|
            |a3|0,49|0,47|0,64|
            |a4|0,16|0,28|0,38|
            |a5|0,49|0,47|0,12|
            |sum|  ?|  ? | ?  |
            |max|  ?|  ? | ?  |
            |min|  ?|  ? | ?  |
            
          • Pakai SQL saja sudah cukup mas:
            Tabel:

            +------+------+------+------+
            | c0   | c1   | c2   | c3   |
            +------+------+------+------+
            | a1   |    3 |    5 |    1 |
            | a2   |    3 |    5 |    5 |
            | a3   |    3 |    5 |    5 |
            | a4   |    1 |    3 |    3 |
            | a5   |    3 |    5 |    1 |
            +------+------+------+------+
            

            SQL:

            SELECT c0
            	, ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM tes_1)), 2) AS hasil_c1 
            	, ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM tes_1)), 2) AS hasil_c2
            	, ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM tes_1)), 2) AS hasil_c3
            FROM tabel
            UNION ALL
            SELECT "SUM"
            	, SUM(ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM tes_1)), 2)) AS total_c1
            	, SUM(ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM tes_1)), 2)) AS total_c2
            	, SUM(ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM tes_1)), 2)) AS total_c2
            FROM tabel

            Hasil:

            +------+----------+----------+----------+
            | c0   | hasil_c1 | hasil_c2 | hasil_c3 |
            +------+----------+----------+----------+
            | a1   |     0.49 |     0.48 |     0.13 |
            | a2   |     0.49 |     0.48 |     0.64 |
            | a3   |     0.49 |     0.48 |     0.64 |
            | a4   |     0.16 |     0.29 |     0.38 |
            | a5   |     0.49 |     0.48 |     0.13 |
            | SUM  |     2.12 |     2.21 |     1.92 |
            +------+----------+----------+----------+
            

            Yang lainnya dilanjutkan sendiri dulu ya mas….

      • pak agus mohon contohnya untuk pnerapan ke php,,krna saya coba coding ini

        $crsum = mysql_query("SELECT
        	  ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2) AS hasil_c1 
        	, ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2) AS hasil_c2
        	, ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2) AS hasil_c3
        FROM nilaicpj
        UNION ALL
        SELECT 
        	  SUM(ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2)) AS total_c1
        	, SUM(ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2)) AS total_c2
        	, SUM(ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2)) AS total_c2
        FROM nilaicpj");
        	$sum = mysql_fetch_array($crsum);
        
        ketika saya panggil $sum['hasil_c1'] hasilnya malah gini
        +------+----------+-
        | c0   | hasil_c1 |
        +------+----------+-----
        | a1   |     0.49 |    
        | a2   |     0.49 |   
        | a3   |     0.49 |  
        | a4   |     0.49 |  
        | a5   |     0.49 |   
        | SUM  |     0    |   
        +------+----------+---
        

        semua datanya sama,,padahal harusnya baris a4 itu 0.16
        dan ketika saya panggil $sum[‘total_c1’] malah gakmuncul pak,,

        • Disaya sudah benar mas:

          <?php
          $conn = mysqli_connect('localhost', 'root', '', 'tutorial_web');
          $crsum = mysqli_query($conn, "SELECT
          	c0,
          	  ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2) AS hasil_c1 
          	, ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2) AS hasil_c2
          	, ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2) AS hasil_c3
          FROM nilaicpj
          UNION ALL
          SELECT 
          	'SUM',
          	  SUM(ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2)) AS total_c1
          	, SUM(ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2)) AS total_c2
          	, SUM(ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2)) AS total_c2
          FROM nilaicpj");
          $sum = mysqli_fetch_all($crsum);
          echo '<pre>'; print_r($sum); die;
          ?>

          Hasil:

          Array
          (
              [0] => Array
                  (
                      [0] => a1
                      [1] => 0.49
                      [2] => 0.48
                      [3] => 0.13
                  )
          
              [1] => Array
                  (
                      [0] => a2
                      [1] => 0.49
                      [2] => 0.48
                      [3] => 0.64
                  )
          
              [2] => Array
                  (
                      [0] => a3
                      [1] => 0.49
                      [2] => 0.48
                      [3] => 0.64
                  )
          
              [3] => Array
                  (
                      [0] => a4
                      [1] => 0.16
                      [2] => 0.29
                      [3] => 0.38
                  )
          
              [4] => Array
                  (
                      [0] => a5
                      [1] => 0.49
                      [2] => 0.48
                      [3] => 0.13
                  )
          
              [5] => Array
                  (
                      [0] => SUM
                      [1] => 2.12
                      [2] => 2.21
                      [3] => 1.92
                  )
          
          )
          • ternyata susah ya pak kalau kurang update seperti saya ini,,sebelumnya terbiasa menggunakan mysql sekarang sudah mysqli,,dan bnyak fiturnya,,setelah saya ganti susunan source code saya ke mysqli jd bnyak yg error,,hadeeeh

          • Pakai mysql_query bisa mas, tergantung versi PHP nya…

            mysql_connect('localhost', 'root', '');
            mysql_select_db('tutorial_web');
            $crsum = mysql_query("SELECT
            	c0,
            	  ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2) AS hasil_c1 
            	, ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2) AS hasil_c2
            	, ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2) AS hasil_c3
            FROM nilaicpj
            UNION ALL
            SELECT 
            	'SUM',
            	  SUM(ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2)) AS total_c1
            	, SUM(ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2)) AS total_c2
            	, SUM(ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2)) AS total_c2
            FROM nilaicpj");
            while($row = mysql_fetch_assoc($crsum)) {
            	
            	$result[] = $row;
            }
            echo '<pre>'; print_r($result);
          • Pakai mysql_query bisa mas, tergantung versi PHP nya…

            mysql_connect('localhost', 'root', '');
            mysql_select_db('tutorial_web');
            $crsum = mysql_query("SELECT
            	c0,
            	  ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2) AS hasil_c1 
            	, ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2) AS hasil_c2
            	, ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2) AS hasil_c3
            FROM nilaicpj
            UNION ALL
            SELECT 
            	'SUM',
            	  SUM(ROUND(c1 / sqrt((SELECT SUM(POW(c1, 2)) FROM nilaicpj)), 2)) AS total_c1
            	, SUM(ROUND(c2 / sqrt((SELECT SUM(POW(c2, 2)) FROM nilaicpj)), 2)) AS total_c2
            	, SUM(ROUND(c3 / sqrt((SELECT SUM(POW(c3, 2)) FROM nilaicpj)), 2)) AS total_c2
            FROM nilaicpj");
            while($row = mysql_fetch_assoc($crsum)) {
            	
            	$result[] = $row;
            }
            echo '<pre>'; print_r($result);
  • makasih ya bapak pencerahannya,, mohon maklum kalau saya banyak tanya,masih awam dalam dunia mysql dan website, moga amal bapak dibalas oleh allah,,,terimakasih bapak agus,, jangan bosan2 menjawab pertanyaan saya ya bapak,,hehe

  • Selamat siang pak
    Saya mau tanya gimana ya caranya agar bisa menambahkan point menggunakan RFID. jadi setiap ditag kartunya maka point akan bertambah
    Terima kasih

  • mas saya mau tanya jadi saya rencananya fasilitas cetak yang dimana sesuai angsuran

    misal total angsuran 400
    pilih menu cetak angsuran 1 maka hasilnya (total angsuran-angsuran1)400-100 =300
    pilih menu cetak angsuran 2 maka hasilnya (total angsuran-(angsuran1+angsuran2))400-100-100=200

    tabel uang_pangkal ==>untuk menentukan jenis angsuran
    nis||nama_angsuran||jumlah bayar
    111 ||angsuran_1||100
    111||angsuran_2||100

    tabel_siswa ==>untuk menentukan nominal tanggungan angsuran
    nis||up||us||
    111||200||200

    • Coba pakai WHERE mas:
      Jika angsuran 1:
      ambil data dari database: SELECT jumlah_bayar FROM uang_pangkal WHERE nama_angsuran = angsuran_1
      Setelah itu kurangkan 400 dengan hasil tersebut.

      Untuk angsuran 2:
      ambil data dari database: SELECT jumlah_bayar FROM uang_pangkal WHERE nama_angsuran = angsuran_1 OR nama_angsuran = angsuran_2
      Setelah itu kurangkan 400 dengan hasil tersebut.

  • mas saya mau nanya dong,, kalo mau menjumlahakan data total dari dua tabel yang berbeda gimnana ya

  • Assalamualaikum
    Mas saya mau nanya tentang MySql misal saya mempunyai 2 tabel

    t_barang 
    kdbarang | nama        | harga|stok|
    A101     | Pensil      | 5000 | 20 |
    A102     | Pulpen      |3000  | 20 |
    A103     |Penghapus    |2000  | 20 |
    
    t_penjualan
    nota|tgl_penjualan  |terjual|kdbarang|
    101 |2017-07-05     |10     |A102  |
    102 |2017-07-05     |5      |A101  |
    103 |2017-07-05     |5      |A103  |
    104 |2017-07-06     |5      |A102  |
    105 |2017-07-06     |5      |A101  |
    106 |2017-07-07     |5      |A102  |
    107 |2017-07-07     |10     |A103  |
    

    disini saya mau menanyakan bagaimana menjumlahkan misal stok-terjual dan harga*terjual menjadi kolom baru dan bagaimana ketika dijumlahkan menjadi satu misal pensil Total 100.000 penghapus total 50.000 tanpa berurutan kebawah satu-satu terimakasih

  • selamat malam mas agus, sya ingin bertanya, apakah query ini bisa di terapkan dalam bahasa pemrograman java ?

  • Mas agus, misalkan saya punya 2 tabel :

    create table barang(
    id_barang(5) primary key,
    nama_barang varchar(30) not null,
    brand varchar(10) not null,
    unit varchar(2) not null,
    harga_satuan numeric(10,2) not null)

    create table TransPenjualan_Detail(
    id_barang varchar(5) not null,
    qty numeric(10,2) not null,
    subtotal numeric(10,2) select harga_satuanspeck,
    foreign key (id_barang) references barang(id_barang))

    Ketika saya input qty dan id_barang di tabel penjualan, subtotal otomatis terhitung dengan harga_satuan di tabel barang dan qty di tabel penjualan. Bagaimana caranya? Terimakasih

  • slamat malam mas agus prabowo, saya mo nanya tentang trigger, permasalahan saya di sini setiap kali ada transaksi dari tabel input, data yang ditampilkan di tabel detail cuma ada 1 row saja,
    bagai mana supaya stiap ada transaksi row bisa tampil kebawah dan menyimpan data lama di tabel
    detail dan tidak berubah, yang berubah hanya data yang baru saja seperti contoh saya input nilai 1000 per transaksi screen shot http://prntscr.com/gdaqh6

    • Ketika ada transaksi dari tabel input, data masuk semua mas?
      Itu triggernya sudah benar sepertinya, ketika ada data masuk, tabel lain diupdate
      Untuk menampilkan datanya tinggal di select tabelnya mas kemudian di tampilkan ke user

  • selamat siang saya mau tanya,
    jika ada kasus dimana ada dua jenis dalam satu tabel misalnya
    A=Golongan 1 batas penerimaan 40
    B=Golongan 2 batas penerimaan 45

    jadi gimana fungsi ifnya jika seandainya yang daftar golongan 1 lebih dari 40 nanti yang ke 41nya masuk ke golongan 2?

    makasih mohon bantuannya.

  • Selamat Idul Qurban Mas.
    mohon maaf lahir batin
    Mas Agus..
    saya punya dua tabel..
    1. transaksi
    2. tbltransaksi…
    ini SQLnya.

    1. tabel transaksi
    — phpMyAdmin SQL Dump
    — version 2.11.1
    http://www.phpmyadmin.net

    — Host: localhost
    — Generation Time: Aug 31, 2017 at 01:58 PM
    — Server version: 5.0.45
    — PHP Version: 5.2.4

    SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;


    — Database: `grenzone`

    — ——————————————————–


    — Table structure for table `transaksi`

    CREATE TABLE `transaksi` (
    `id_transaksi` int(11) NOT NULL auto_increment,
    `id_user` char(9) NOT NULL,
    `kode_transaksi` char(8) NOT NULL,
    `nama` varchar(30) NOT NULL,
    `alamat` varchar(30) NOT NULL,
    `no_telepon` varchar(30) NOT NULL,
    `tanggal_masuk` varchar(100) NOT NULL,
    `tanggal_selesai` varchar(100) NOT NULL,
    `status` enum(‘AMBIL’,’BELUM’) NOT NULL default ‘BELUM’,
    PRIMARY KEY (`id_transaksi`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=186 ;


    — Dumping data for table `transaksi`

    INSERT INTO `transaksi` (`id_transaksi`, `id_user`, `kode_transaksi`, `nama`, `alamat`, `no_telepon`, `tanggal_masuk`, `tanggal_selesai`, `status`) VALUES
    (185, ‘195’, ‘00004’, ‘ana’, ‘depok’, ‘018210349389’, ’08/31/2017′, ’09/02/2017′, ‘BELUM’),
    (184, ‘194’, ‘00003’, ‘ata’, ‘cipedak’, ‘018210349389’, ’08/31/2017′, ’08/31/2017′, ‘BELUM’),
    (183, ‘194’, ‘00002’, ‘ata’, ‘cipedak’, ‘018210349389’, ’08/31/2017′, ’09/02/2017′, ‘BELUM’),
    (182, ‘179’, ‘0001’, ‘jaen’, ‘cipedak’, ‘082259211091’, ’08/31/2017′, ’09/02/2017′, ‘BELUM’);

    tabel tbltransaksi

    — phpMyAdmin SQL Dump
    — version 2.11.1
    http://www.phpmyadmin.net

    — Host: localhost
    — Generation Time: Aug 31, 2017 at 02:06 PM
    — Server version: 5.0.45
    — PHP Version: 5.2.4

    SET SQL_MODE=”NO_AUTO_VALUE_ON_ZERO”;


    — Database: `grenzone`

    — ——————————————————–


    — Table structure for table `tbltransaksi`

    CREATE TABLE `tbltransaksi` (
    `id_transaksi` int(11) NOT NULL auto_increment,
    `kode_transaksi` char(8) NOT NULL,
    `nama_barang` varchar(30) NOT NULL,
    `hari` varchar(30) NOT NULL,
    `harga` int(11) NOT NULL,
    `jumlah` int(11) NOT NULL,
    `total_harga` int(11) NOT NULL,
    PRIMARY KEY (`id_transaksi`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=159 ;


    — Dumping data for table `tbltransaksi`

    INSERT INTO `tbltransaksi` (`id_transaksi`, `kode_transaksi`, `nama_barang`, `hari`, `harga`, `jumlah`, `total_harga`) VALUES
    (153, ‘0001’, ‘Boneka Kecil’, ‘5’, 10000, 4, 40000),
    (154, ‘00002’, ‘Boneka Kecil’, ‘5’, 10000, 9, 90000),
    (155, ‘00002’, ‘REGULER CUCI SETRIKA I’, ‘1’, 9000, 4, 36000),
    (156, ‘00002’, ‘REGULER CUCI SETRIKA I’, ‘1’, 9000, 2, 18000),
    (157, ‘00003’, ‘REGULER CUCI SETRIKA II’, ‘2’, 8000, 4, 32000),
    (158, ‘00004’, ‘REGULER CUCI SETRIKA II’, ‘2’, 8000, 6, 48000);

    Bagaimana agar bisa menampilakn total harga dari tbltransaksi berdasarkan kode_transaksi dari kedua tabel tsb.

    ini scriipt saya
    SELECT
    transaksi.kode_transaksi,
    transaksi.nama,
    transaksi.alamat,
    transaksi.no_telepon,
    transaksi.status,
    SUM(tbltransaksi.total_harga ) AS total_harga
    FROM transaksi LEFT JOIN tbltransaksi
    ON tbltransaksi.kode_transaksi
    GROUP BY transaksi.kode_transaksi
    hasilnya tdk sesuai.
    mohon bantuannya..
    terima kasih.

  • dan juga kalau mau tampilkan jumlah total_bayar dari kedua tabel di atas berdasarkan status =’BELUM’ dari tabel transaksi bmn ya??
    terima kasih 🙂

  • maaf mas mau nanya kalau kita ingin mencari total dari tabel yang sudah dimanipulasi itu gimana ya, ini query manipulasi nya mas :
    round(count(hg) * hgb), 1)

    tolong respon nya mas

  • Mastah, untuk menjumlahkan dari 2 dari hasil penjumlahan, querynya bagaimana?
    misal, 1. a + b = c
    2. d + e = f
    3. c + f = ?
    datanya dalam 1 tabel semua mastah.
    makasih..
    Salam…

  • bagaimana cara mebuat rangking per siswa untuk raport berdasarkan nilai akhir, misalnya:

    nama: tes
    kelas: 9-A
    nisn:000007373
    nilai: 73
    ranking: 5

  • bagaimana cara membuat ranking di raport per siswa berdasarkan nilai akhir, misal:

    nama : tes
    kelas : 9-A
    nisn : 0006736476374
    nilai : 75
    ranking : 14

      • seperti yang saya contohkan pa, cuma ranking saja yang tidak ada di database, sudah bingung saya pak mengatasinya.

          • tabel database terdiri dari

            nama_siswa
            kelas
            nilai_akhir
            semester
            tahun_ajaran

            nilai akhir hasil penjumlahan dari beberapa nilai inputan

            hasil output yang diinginkan seperti yang saya contohkan cuma satu siswa saja bukan secara berkelompok pa.

          • Kalau tidak ada contoh datanya saya agak kesulitan mas:
            coba SELECT * FROM tabel ORDER BY nilai_akhir LIMIT 1, itu untuk rangking 1
            Rangking 2 LIMIT 1,1
            Rangking 3 LIMIT 2,1, dst…

    • $siswa = $this->db->query(“SELECT k.id_kelas, k.nama_kelas, SUM(IF(s.j_kelamin = ‘L’,1,0)) AS jumlahlaki, SUM(IF(s.j_kelamin = ‘P’,1,0)) AS jumlahperempuan , SUM(IF(s.j_kelamin = ‘L’,1,0)) + SUM(IF(s.j_kelamin = ‘P’,1,0)) AS jumlahsiswa FROM kelas AS k
      JOIN siswa_kelas AS sk ON k.id_kelas = sk.id_kelas
      JOIN siswa AS s ON s.NISN = sk.NISN
      JOIN tahun_ajaran AS ta ON ta.id_tahun_ajaran = sk.id_tahun_ajaran
      WHERE sk.id_tahun_ajaran = $tahunajar
      GROUP BY id_kelas

      UNION ALL
      SELECT “TOTAL”,
      SUM(IF(s.j_kelamin = ‘L’,1,0)) AS jumlahlaki,
      SUM(IF(s.j_kelamin = ‘P’,1,0)) AS jumlahperempuan ,
      SUM(IF(s.j_kelamin = ‘L’,1,0)) + SUM(IF(s.j_kelamin = ‘P’,1,0)) AS jumlahsiswa
      FROM siswa;”);

  • Salam Mas Agus, Semoga selalu sehat ya.
    amin.
    mau nanya mas..
    bagaimana menamilkan data pada tabel seperti ini?

    ID Nama Paket Departure Arrival Total Seat Double Triple Quad Bayi

    databasnya ini mas.

    — phpMyAdmin SQL Dump
    — version 4.3.13
    — http://www.phpmyadmin.net
    —
    — Host: localhost
    — Generation Time: Jun 22, 2015 at 04:02 PM
    — Server version: 5.5.33
    — PHP Version: 5.5.3
    
    SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO”;
    SET time_zone = “+00:00″;
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    —
    — Database: `recruitment`
    —
    
    DELIMITER $$
    —
    — Functions
    —
    CREATE DEFINER=`patunatr`@`localhost` FUNCTION `digits`( str CHAR(32) ) RETURNS char(32) CHARSET latin1
    BEGIN
    DECLARE i, len SMALLINT DEFAULT 1;
    DECLARE ret CHAR(32) DEFAULT ”;
    DECLARE c CHAR(1);
    
    IF str IS NULL
    THEN
    RETURN “”;
    END IF;
    
    SET len = CHAR_LENGTH( str );
    REPEAT
    BEGIN
    SET c = MID( str, i, 1 );
    IF c BETWEEN ‘0’ AND ‘9’ THEN
    SET ret=CONCAT(ret,c);
    END IF;
    SET i = i + 1;
    END;
    UNTIL (i &gt; len) OR c = ‘.’ END REPEAT;
    RETURN ret;
    END$$
    
    DELIMITER ;
    
    — ——————————————————–
    
    —
    — Table structure for table `airlines`
    —
    
    CREATE TABLE `airlines` (
    `idairlines` int(11) NOT NULL,
    `airlinesname` varchar(45) DEFAULT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
    
    —
    — Dumping data for table `airlines`
    —
    
    INSERT INTO `airlines` (`idairlines`, `airlinesname`) VALUES
    (1, ‘Garuda Indonesia’),
    (2, ‘Etihad Airways’),
    (3, ‘Qatar Airways’),
    (4, ‘Kuwait Airways’),
    (5, ‘Saudi Airlines’),
    (6, ‘Emirates Airways’),
    (7, ‘Singapore Airlines’),
    (8, ‘Turkish Airways’),
    (9, ‘Egypt Air’),
    (10, ‘CITILINK’),
    (11, ‘Qatar via Madinah’),
    (12, ‘Etihad via Madinah’),
    (13, ‘Etihad via Jeddah’),
    (14, ‘Qatar via Jeddah’),
    (15, ‘Turkish via Madinah’),
    (16, ‘Turkish via Jeddah’),
    (17, ‘Egypt via Madinah’);
    
    — ——————————————————–
    —
    — Table structure for table `package`
    —
    
    CREATE TABLE `package` (
    `idpackage` int(11) NOT NULL,
    `packagetype` enum(‘Haji’,’Umroh’,’Wisata’) DEFAULT NULL,
    `packagename` varchar(150) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    —
    — Dumping data for table `package`
    —
    
    INSERT INTO `package` (`idpackage`, `packagetype`, `packagename`) VALUES
    (1, ‘Umroh’, ‘Orange’),
    (2, ‘Umroh’, ‘Ungu’),
    (3, ‘Umroh’, ‘Biru’),
    (4, ‘Umroh’, ‘Hijau’),
    (5, ‘Umroh’, ‘Coklat’),
    (6, ‘Umroh’, ‘Lanjutan Istanbul’),
    (7, ‘Umroh’, ‘Lanjutan Aqso’),
    (8, ‘Umroh’, ‘Lanjutan Abudhabi’),
    (9, ‘Umroh’, ‘Lanjutan Maroko Spanyol’),
    (10, ‘Umroh’, ‘Lanjutan Cairo’),
    (11, ‘Umroh’, ‘Lanjutan Istanbul + Edirne’),
    (12, ‘Umroh’, ‘Lanjutan Istanbul + Bursa’),
    (13, ‘Umroh’, ‘Lanjutan Istanbul + Yunani’),
    (14, ‘Umroh’, ‘Lanjutan Istanbul + Bosnia’),
    (15, ‘Umroh’, ‘Lanjutan Istanbul + Uzbekistan’),
    (16, ‘Umroh’, ‘Lanjutan Cairo + Yunani’),
    (18, ‘Umroh’, ‘Lanjutan Ankara + Capadocia’);
    
    — ——————————————————–
    —
    — Table structure for table `umrohpackage`
    —
    
    CREATE TABLE `umrohpackage` (
    `idumrohpackage` varchar(50) NOT NULL,
    `noflight` varchar(15) NOT NULL,
    `departure` date DEFAULT NULL,
    `arrival` date DEFAULT NULL,
    `totalseat` int(11) DEFAULT NULL,
    `idpackage` int(11) DEFAULT NULL,
    `idairlines` int(11) DEFAULT NULL,
    `tourleader` varchar(30) NOT NULL,
    `moderate` int(2) NOT NULL DEFAULT ‘0’ COMMENT ‘moderate=1, can only be booked by patuna pusat’
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    —
    — Dumping data for table `umrohpackage`
    —
    
    INSERT INTO `umrohpackage` (`idumrohpackage`, `noflight`, `departure`, `arrival`, `totalseat`, `idpackage`, `idairlines`, `tourleader`, `moderate`) VALUES
    (‘BI2LXQI9FAD6’, ‘-‘, ‘2017-03-08’, ‘2017-03-16’, 45, 3, 11, ‘-‘, 0),
    (‘BI35Q9T7IQ5N’, ‘-‘, ‘2017-01-20’, ‘2017-01-27’, 45, 3, 13, ‘-‘, 0),
    (‘BI484ETQUB5B’, ‘-‘, ‘2017-01-11’, ‘2017-01-19’, 40, 3, 1, ‘-‘, 0),
    (‘BI4AY5C8FEAV’, ‘-‘, ‘2017-02-08’, ‘2017-02-16’, 40, 3, 1, ‘-‘, 0),
    (‘BI5BLWC5IMQ3’, ‘-‘, ‘2017-03-09’, ‘2017-03-16’, 45, 3, 13, ‘-‘, 0),
    (‘BI5WPGU2CPWV’, ‘-‘, ‘2017-03-16’, ‘2017-03-23’, 45, 3, 13, ‘-‘, 0),
    (‘BI672XIRC2KG’, ‘-‘, ‘2017-03-23’, ‘2017-03-30’, 45, 3, 13, ‘-‘, 0),
    (‘BI87N2IWTD59’, ‘-‘, ‘2017-02-22’, ‘2017-03-01’, 40, 3, 1, ‘-‘, 0),
    (‘BI8G66HVIPGX’, ‘-‘, ‘2017-01-25’, ‘2017-02-02’, 40, 3, 1, ‘-‘, 0),
    (‘UNW95OIQSZMX’, ‘-‘, ‘2017-02-29’, ‘2017-03-08’, 25, 2, 1, ‘-‘, 0);
    
    — ——————————————————–
    —
    — Table structure for table `umrohpackageprice`
    —
    
    CREATE TABLE `umrohpackageprice` (
    `idprice` int(11) NOT NULL,
    `idumrohpackage` varchar(50) NOT NULL,
    `typecost` varchar(50) NOT NULL,
    `price` int(11) NOT NULL
    ) ENGINE=InnoDB AUTO_INCREMENT=2717 DEFAULT CHARSET=utf8;
    
    —
    — Dumping data for table `umrohpackageprice`
    —
    
    INSERT INTO `umrohpackageprice` (`idprice`, `idumrohpackage`, `typecost`, `price`) VALUES
    (2137, ‘UNELNDTGUY6R’, ‘Kamar Ber 2’, 3350),
    (2138, ‘UNELNDTGUY6R’, ‘Kamar Ber 3’, 3250),
    (2139, ‘UNELNDTGUY6R’, ‘Kamar Ber 4’, 0),
    (2140, ‘UNELNDTGUY6R’, ‘Bayi’, 500),
    (2141, ‘HIJEDWHJUB3B’, ‘Kamar Ber 2’, 2950),
    (2142, ‘HIJEDWHJUB3B’, ‘Kamar Ber 3’, 2850),
    (2143, ‘HIJEDWHJUB3B’, ‘Kamar Ber 4’, 2800),
    (2144, ‘HIJEDWHJUB3B’, ‘Bayi’, 500),
    (2145, ‘UN4JV5UXSWJK’, ‘Kamar Ber 2’, 3350),
    (2146, ‘UN4JV5UXSWJK’, ‘Kamar Ber 3’, 3250),
    (2147, ‘UN4JV5UXSWJK’, ‘Kamar Ber 4’, 0),
    (2148, ‘UN4JV5UXSWJK’, ‘Bayi’, 500),
    (2716, ‘LAJP37SJIEMD’, ‘Bayi’, 500);
    
    —
    — Indexes for dumped tables
    —
    
    —
    — Indexes for table `airlines`
    —
    ALTER TABLE `airlines`
    ADD PRIMARY KEY (`idairlines`);
    
    —
    — Indexes for table `umrohpackage`
    —
    ALTER TABLE `umrohpackage`
    ADD PRIMARY KEY (`idumrohpackage`);
    
    —
    — Indexes for table `umrohpackageprice`
    —
    ALTER TABLE `umrohpackageprice`
    ADD PRIMARY KEY (`idprice`), ADD KEY `idumrohpackage` (`idumrohpackage`);
    
    —
    — AUTO_INCREMENT for dumped tables
    —
    
    —
    — AUTO_INCREMENT for table `airlines`
    —
    ALTER TABLE `airlines`
    MODIFY `idairlines` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=18;
    —
    — AUTO_INCREMENT for table `umrohpackageprice`
    —
    ALTER TABLE `umrohpackageprice`
    MODIFY `idprice` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2717;
    —
    — Constraints for dumped tables
    —
    
    —
    — Constraints for table `umrohpackageprice`
    —
    ALTER TABLE `umrohpackageprice`
    ADD CONSTRAINT `umrohpackageprice_ibfk_1` FOREIGN KEY (`idumrohpackage`) REFERENCES `umrohpackage` (`idumrohpackage`) ON DELETE CASCADE ON UPDATE CASCADE;
  • selamat siang mas agus, mohon maaf mengganggu,
    saya mau nanya nih.. bagaimana query untuk melakukan pengurangan pada sebuah field ?

  • Selamat pagi mas, newbi izin bertanya, setelah saya dapatkan query yang saya inginkan (sesuai tutor ini) bagaimanakah cara menampilkannya pada web PHP? adakah tutornya?, makasih.

  • Selamat pagi.
    Saya memiliki tabel dengan nama: omset
    dengan isi: no,nama,omzet_jan,omzet_feb,omzet_mar

    Saya ingin menjumlahkan data omset ketiga bulan tersebut pada data yang sebelumnya yang telah inputkan sebagaimana biasa. Namun, saya mengalami kegagalan. Bisakah anda untuk membantu?

    • Coba mas: pertama ambil ketiga data tersebut, misal: SELECT omzet_jan + omzet_feb + omzet_mar AS omzet FROM table
      setelah itu jumlahkan data tersebut dengan data yang diinputkan

  • mas agus…
    saya mau nanya nih…
    kalau misal data penjualan dalam satu bulan, katakan bulan januari 2018 ada 15 record, kalau saya panggil untuk ditampilkan dalam tabel kan cuma ada 15 data dengan tanggal transaksinya.
    yang ingin saya tanyakan adalah
    saya ingin menampilkan tabelnya lengkap dari tanggal 01 s/d 31 (akhir bulan), tanggal yang tidak ada data penjualan tetap tampil tanggalnya di kolom tabel namun jmlh penjualan 0.
    terimaksaih sebelumnya.

    • Coba ambil data seperti biasa menggunakan query dan hasilnya disimpan ke dalam array, kemudian untuk tanggalnya ditampilkan semua dengan php, selanjutnya di cek di array tersebut apakah di tanggal tersebut ada datanya, misal:

      
      $con = mysqli_connect('localhost', 'root', 'pass', 'db');
      $query = mysqli_query($conn, 'SELECT * FROM tabel');
      while($row = mysqli_fetch_assoc($query)) {
      	$data[$row['tanggal']] = $row['nama'];
      }
      
      $tahun = '2018';
      $jml_hari = date('n');
      for($i=1, $i<=$jml_hari, $i++) {
      	// dua digit tanggal
      	$tgl = substr('0' . $i, -2);
      	$tgl_full = $tahun . '-' . $bulan . '-' . $tgl;
      	if (key_exists($tgl_full, $data)) {
      		echo $data[$tgl_full];
      	} else {
      		echo 0;
      	}
      }
  • mas agus saya mau tanya mas.. kalau mau menampilkan jumlah barang tapi jika ada barang yang sama maka jumlahnya saja yang bertambah. misalkan tabelnya seperti ini mas

    1. tabel_detail_masuk, isi querynya sbb :
    SELECT kode_detail, no_brg_masuk, kode_brg, jml_brg, hrg, subtotal FROM tabel_detail_masuk

    2. tabel barang
    SELECT kode_brg, nm_brg FROM tabel_barang

    nah setelah itu saya mau buat transaksinya
    misalkan pada tabel detail akan ditampilkan seperti ini :

    NO. Kode Barang Nama Barang Jumlah Brg harga Brg
    1. BR001 Aqua 2 2000
    2. BR001 Aqua 2 2000

    nah ketika saya mau menambahkan barang yang sama, cukup jumlah barangnya saja yang bertambah tanpa harus menampilkan kode barang dan nama barang lagi.. terimakasih mas

  • kalau kaya gini gimana
    day|count
    01-01-2018|10
    02-01-2018|10
    03-01-2018|10

    day|sum
    01-01-2018|10
    02-01-2018|20
    03-01-2018|30
    querynya apa ya

  • Selamat pagi pak
    saya ingin bertanya,saya membuat table di mysql

    saya memiliki table_produksi

    |no_produksi|type_sepeda|jumlah_produksi|
    -----------------------------------------
    |01         |a1         |234            |
    |02         |a2         |333            |
    |03         |a1         |676            |
    |04         |a1         |987            |
    |05         |a4         |1254           |
    |06         |a4         |456            |
    

    tabel_sepeda

    |type_sepeda|jumlah_produksi|
    -----------------------------
    |a1         |0              |
    |a2         |0              |
    |a3         |0              |
    |a4         |0              |
    

    bagaimana caranya agar jumlah_produksi sepeda yang ada di table produksi otomatis SUM dan masuk ke jumlah produksi dari tabel_sepeda??
    terimakasih

  • mas mau tanya, saya mau pakai sum dengan lebih dari 1 parameter.

    SELECT users.id, SUM(CASE WHEN leave_category_id = 1 AND ver_hr = 1 END) AS annual_total_day
    FROM users
    LEFT JOIN leave_transaction 
    ON users.id = leave_transaction.user_id
    GROUP BY users.id
    

    query di atas syntax error mas.

    tapi kalau 1 parameter bisa mas

    SELECT users.id, SUM(IF( (leave_category_id) = 1, total_day, 0)) AS annual_total_day
    FROM users
    LEFT JOIN leave_transaction 
    ON users.id = leave_transaction.user_id
    GROUP BY users.id
    

    Mohon pencerahannya mas,
    Makasih

  • Min kalau query penjumlahan antar tabel dan kolom gimana? misal

    1. Tabel Mitra

    --------------------
    | id_mitra     | harga  |       
    ------------------------- 
    | 01           | 20.000 |
    |02            | 30.000 |
    |03            | 30.000 |
     ------------------------

    total 80.0000

    2. Tabel Jenis Barang

    ----------------------------------
    | id_jenis barang          |   harga2 |       
    ---------------------------------------
    | 01                       | 10.000   |
    |02                        | 30.000   |
    |03                        | 20.000   |
     --------------------------------------

    total 60.0000

    3. Tabel Langganan

    ----------------------------------
    | id_langganan             |   jumlah |       
    ---------------------------------------
    | 01                       | 10.000   |
    |02                        | 10.000   |
    |03                        | 20.000   |
     --------------------------------------

    total 40.0000

    Bagaimana Query mysql menjumlahakan isi tabel 80.000+60.000+40.000 = 180.000

    Trimakasih

    • Coba menggunakan SUM mas:

      SELECT SUM(jumlah) FROM (
      	SELECT SUM(harga) AS jumlah FROM mitra
      	UNION ALL 
      	SELECT SUM(harga) FROM jenis_barang
      	UNION ALL
      	SELECT SUM(jumlah) FROM langganan
      ) AS total
  • Trimaksih mas Agus Prawoto Hadi Query nya berhasil , Ada yg mau di tanyakan lagi mas , jadi penjumlahan dari 3 tabel diatas di kurangi jumlah tabel pengeluaran misal, 80.000+60.000+40.000 = 180.000 – 80.000 = 100. 000
    Untuk Query nya gimana mas ?? maaf saya pemula hehe

    1. Tabel Mitra
    ---------------------
    | id_mitra | harga  |       
    ---------------------
    | 01       | 20.000 |
    |02        | 30.000 |
    |03        | 30.000 |
     --------------------
    total 80.0000
    
    2. Tabel Jenis Barang
    -------------------------------
    | id_jenis barangi |   harga2 |       
    -------------------------------
    | 01               | 10.000   |
    |02                | 30.000   |
    |03                | 20.000   |
     ------------------------------
    total 60.0000
    
    3. Tabel Langganan
    ------------------------------
    | id_langganan    |   jumlah |       
    ------------------------------
    | 01              | 10.000   |
    |02               | 10.000   |
    |03               | 20.000   |
     -----------------------------
    total 40.0000
    
    4. Tabel Pengeluaran
    --------------------------------------------------------------------
    | id_pengeluaran |  nama_pengeluaran |pengeluaran       
    --------------------------------------------------------------------
    |01             | 10.000             |kertas       |    20.000     |
    |02              | 10.000            |print        |    50.000     |
    |03              | 20.000            |bol point    |    10.000     |
     -------------------------------------------------------------------
    total 80.0000
    • Coba seperti ini mas:

      SELECT SUM(jumlah) - (SELECT SUM(pengeluaran) FROM pengeluaran)
      FROM (
      	SELECT SUM(harga) AS jumlah FROM mitra
      	UNION ALL 
      	SELECT SUM(harga) FROM jenis_barang
      	UNION ALL
      	SELECT SUM(jumlah) FROM langganan
      ) AS total
  • mas.. kalo kasus gini gimana, misalny ada tabel punya 3 kolom, kolom 1 & 2 bernilai integer, kolom 3 integer juga, tapi nilai nya adalah hasil perkalian dari kolom 1 dan 2. Bisa bantu mas? terimakasih

  • iya mas,, tapi kolom 3 bukan alias, tp query insert dari hasil select perkalian kolom 1 dan kolom 2,,

    • Bisa dicoba seperti ini mas: INSERT INTO table (col1, col2, col3) VALUES (3, 4, 3 * 4)
      Atau jika data sudah ada, bisa menggunakan statemen UPDATE, misal: UPDATE tabel SET col3 = col1 * col2

  • ———————–
    | Data |Total |
    ———————–
    | 6 | 0 |
    | 3 | 0 |
    | 3 | 0 |
    ———————-
    Mas, saya punya kasus begini.
    saya mau setiap nilai Data “dibagi” dgn JUMLAH TOTAL DATA itu sendiri dan dimasukan kedalam kolom sebelahnya. saya sudah mencoba Data yg pertama dgn : SELECT (TUNDA) / SUM(TUNDA) FROM table_data; (2)
    Lalu untuk memasukan kedalam kolom sebelahnya gmna ya mas? dan untuk memilih 3/JUMLAH TOTAL DATA itu sendiri dan dimasukan ke kolom sebelahnya gimana juga ya mas?

    • Tinggal gunakan update mas:

      @total := SELECT SUM(TUNDA) FROM table;
      UPDATE tabel SET total = TUNDA / @total

      atau cukup:

      UPDATE tabel SET total = TUNDA / (SELECT SUM(TUNDA) FROM table);

  • mas kalo mau buat token masuk berdasarkan kode jalur pendaftaran gimane ye,
    id|nama|pilihan|jalur_pendaftaran|kode_masuk
    1|a|satu pilihan|REG-1|?
    1|a|satu pilihan|REG-2|?
    1|a|satu pilihan|REG-1|?
    1|a|satu pilihan|REG-1|?
    1|a|satu pilihan|REG-1|?
    1|a|satu pilihan|REG-2|?

    menjadi kaya gini gimane ya mas,
    1|a|satu pilihan|REG-1|REG-10001
    1|a|satu pilihan|REG-2|REG-10001
    1|a|satu pilihan|REG-1|REG-10002
    1|a|satu pilihan|REG-1|REG-10003
    1|a|satu pilihan|REG-1|REG-10004
    1|a|satu pilihan|REG-2|REG-10002

  • Saya masu tanya dong mas, kalau saya mau hitung total dalam 1 bulan selama 1 tahun bagaimana y queryny??
    contoh :
    -di bulan Januari 2018 ada 50 user yang di approved
    -di bulan Februari 2018 ada 30 user yang di approved
    nah saya mau dpt output seperti ini.
    Januari 2018| Februari 2018| Total 2018
    50 | 30 | 80

    mohon pencerahannya..
    Terima kasih..

  • mas saya newbie
    mau tanya kl kita punya kolom 1 dan 2
    terus kita mau jumlahin kolom 1 + kolom 2 hasilnya di kolom 3

    gimana ya?

    sekalian sama perkalian kolom 1 dan kolom 2 ya mas
    mohon pencerahannya

    thanks

  • Selamat sore mas, saya mau tanya kalau kita mau ambil data dibawah ini dengan mengeliminasi id_akun dan pagu_akun yang sama tapi tidak mengeliminasi nominal dan sisa bagaimana ya caranya?
    soalnya pada saat saya coba sum data tersebut tidak sesuai dikarenakan ada data yang double.

    id id_akun pagu_akun nominal sisa
    1 85 5640000 84000 5556000
    2 90 5640000 362000 5278000
    3 90 5640000 335000 5305000
    4 90 5640000 242000 5398000
    5 90 5640000 592000 5048000
    6 96 54840000 22500000 32340000
    7 93 108900000 21977900 86922100
    8 93 108900000 21597360 87302640
    9 93 108900000 11871760 97028240
    10 95 18000000 3600000 14400000
    11 95 18000000 2700000 15300000
    12 95 18000000 1800000 16200000
    13 95 18000000 3000000 15000000
    14 97 5640000 233500 5406500
    15 97 5640000 129500 5510500
    16 97 5640000 285000 5355000
    17 97 5640000 133000 5507000
    18 98 78000000 6000000 72000000
    19 98 78000000 6000000 72000000
    20 99 2700000 300000 2400000
    21 91 105639000 6750000 98889000
    22 91 105639000 6750000 98889000
    23 117 18000000 3000000 15000000
    24 113 5640000 252000 5388000
    NULL 1 20998000 0 20998000

    mohon pencerahannya mas, terima kasih banyak

  • misal kita d suruh buat tabel movie(title,year,length,studioName)
    dan kita sudah masukkan banyak data
    cara menghitung total keseluruhan length bagaimana ya mas
    saya pakai oracle
    dan setelah it kita d suruh buat trigger yang scriptnya kalo jumlah length dari seluruh movies > 10000
    maka trigger harus menampilkan “The Minutes is Exceeded”.

  • mas misal gini :

    A B C D
    A 1 3 4 1
    B 2 4 5 6
    C 2 3 6 4
    D 7 2 4 4

    Cara menampilkan jumlah nilai tertinggi gmn mas ??

  • Mas tanya donk, kalau saya mau hitung total harga dari berdasarkan “no” bagaimana ya?

    no | harga
    1 | 500
    2 | 300
    1 | 200
    3 | 200
    2 | 100
    3 | 200
    1 | 200
    3 | 400

    Terima kasih

  • Selamat malam mas,.. sya mw tanyg..
    Kalau mencari nilai max dan min sperti contoh diatas gmna ya mas..

  • pak agus mau taya
    saya puya 2 tabel
    tabel 1

    tnama
    idn | nama
    1 | dwi
    2 | ita
    3 | rama
    4 | lia
    5 | joni

    tjual
    idj | idn | produk
    1 | 2 | a
    2 | 2 | b
    3 | 3 | c
    4 | 3 | d
    5 | 4 | a
    6 | 4 | c

    jadi yang saya mau tayakan query bagaimana, jika hasil query seperty bawah :

    idn
    2
    3
    4

    atau muncul

    jumlah idn
    3

    seoalah-olah mendata dan menghitung banyak nama yang ikut menjual

  • mas izin bertanya. saya punya 1 tabel dengan data.
    Tanggal | Mesin | Value
    2019-06-24 10:20 |AA|5000
    2019-06-24 10:20 |BB|6000
    2019-06-24 10:21 |AA|6000
    2019-06-24 10:21 |BB|7000
    2019-06-25 14:05 |AA|7000
    2019-06-25 14:05 |BB|8000
    2019-06-25 14:06 |AA|8000
    2019-06-25 14:06 |BB|9000

    bagaimana ya mas query nya kalau saya ingin mengurangi nilai Value Max() – Value MIN() di tanggal yang sama. mohon pencerahannya mas. terimakasih

    • Itu harus pake query sendiri sendiri mas
      SELECT (SELECT Max(value) FROM table WHERE tanggal = “2019-06-24”) – (SELECT Min(value) FROM table WHERE tanggal = “2019-06-24”) AS selisih

  • jika kode dan kasus di atas menggunakan php seperti apa ya mas scriptnya ? mohon Bantuannya mas !

  • maaf mas tanya lagi, kalau script yang di atas tidak pakai input tanggal manual tapi menggunakan MAX() dari Tanggal seperti apa ya mas scriptnya. Mohon bantuannya

  • Saya pingin membuat tabel seperti ini, bagaimana caranya?, mohon pencerahannya, terima kasih.

    TAMPILAN TABEL DI SITUS WEB (Sebelum di input)
    +——+———–+ ———-+———-+———+————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——+———–+———–+———-+———+————+
    | 1 | Dwi | | | | |
    | 2 | Andi | | | | |
    | 3 | Agus | | | | |
    +——+———–+———–+———-+———+————+

    INPUT DATABASE
    +——+———–+ ———-+———-+———+————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——+———–+———–+———-+———+————+
    | 1 | Dwi | input | input | auto x | y=1000-x |
    | 2 | Andi | input | input | auto x | y=1000-x |
    | 3 | Agus | input | input | auto x | y=1000-x |
    +——+———–+———–+———-+———+————+

    TAMPILAN TABEL DI SITUS WEB (Sesudah di input)
    +——+———–+ ———-+———-+———+————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——+———–+———–+———-+———+————+
    | 1 | Dwi | 500 | 100 | 600 | 400 |
    | 2 | Andi | 500 | 500 | 1000 | 0 |
    | 3 | Agus | 500 | 200 | 700 | 300 |
    +——+———–+———–+———-+———+————+

    ======================================
    untuk di upload

    Saya pingin membuat tabel seperti ini, bagaimana caranya?, mohon pencerahannya, terima kasih.

    TAMPILAN TABEL DI SITUS WEB (Sebelum di input)
    +——–+————–+ ————-+————+————–+——————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——–+————–+————–+————+————–+——————+
    | 1 | Dwi | | | | |
    | 2 | Andi | | | | |
    | 3 | Agus | | | – | |
    +——-+—————+————–+————+————–+——————+

    INPUT DATABASE
    +——–+————–+ ————-+————+————–+——————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——–+————–+ ————-+————+————–+——————+
    | 1 | Dwi | input | input | auto x | y=1000-x |
    | 2 | Andi | input | input | auto x | y=1000-x |
    | 3 | Agus | input | input | auto x | y=1000-x |
    +——–+————–+ ————-+————+————–+——————+

    TAMPILAN TABEL DI SITUS WEB (Sesudah di input)
    +——–+————–+ ————-+————+————–+——————+
    | NO | NAMA | TGL-1 | TGL-2 | JUMLAH | JUMLAH Y |
    +——–+————–+ ————-+————+————–+——————+
    | 1 | Dwi | 500 | 100 | 600 | 400 |
    | 2 | Andi | 500 | 500 | 1000 | 0 |
    | 3 | Agus | 500 | 200 | 700 | 300 |
    +——–+————–+ ————-+————+————–+——————+

  • SELECT (SELECT Max(value) FROM table WHERE tanggal = “2019-06-24”) – (SELECT Min(value) FROM table WHERE tanggal = “2019-06-24”) AS selisih

    yang ini script dari mas agus. tapi eror saat runing. terus bagaimana ya mas value dari “tanggal”nya pake MAX() semua. jadi intinya tuh saya ingin mengurangi data hari terakhir dan awal. data 24:00 – 00:01 di hari ini(MAX() dari tanggal atau tanggal terakhir). mhon pencerahannya mas.

  • Baik mas.. akan saya rinci satu per satu pertanyaan saya, begini mas:
    =========================================================================
    Saya puya tabel kosong seperti tabel di bawah ini
    dan saya ingin menginput tabel tersebut.

    Contoh TABEL sudah ada (ini didalam url. halaman Home)
    ————————————————————————–
    | No | Nama | klm1 | klm2 | klm3 | Jumlah |
    ————————————————————————-
    | 01 | Dwi | | | | |
    | 02 | Andi | | | | |
    | 03 | Agus | | | | |
    ————————————————————————
    Jumlah | | | | |
    ————————————————————————

    Saya ingin menginput tabel diatas, pada kolom 1, 2, 3, dan sekaligus menjumlahkan,
    terima kasih

  • bagaimana caranya membuat sistem penjumlahan otomatis? misalnya kolom1 + kolom 2 + kolom3 + kolom4 + kolom5 = total kolom6 dan sekaligus penjumlahan row pada kolom6.

    bagaimana cara membuat scrip nya, sebelumnya terima kasih…

  • Mohon bantuan mas

    Saya punya 3 tabel, .
    1. Tabel pemasukan
    -id_pemasukan
    Id_periode
    Jumlah_pemasukan

    2. Tabel pengeluaran
    Id_pengeluaran
    Id_periode
    Jumlah_pengeluaran

    3.Tabel periode
    Id_periode
    Nama_periode

    Sya mau dapatkan hasil jumlah pemasukan di kurangi jumlah pengeluaran berdasarkan periode nya….

    Query nya gimana ya mas..
    Mohon bantuannya

  • kalo hasilnya begini gimana ya ?
    bintangnya juga harus ada angkanya

    |****12|***444|*54643|**3155|
    |667543|**8637|*****0|***369|
    |**7516|***335|

  • ID Transaksi| Nama Barang | Tgl_Transaksi |Total | Pelanggan
    —————————————————————————————————-
    PM000987 |sampo | 01-08-2019 |10000 |Andi
    PM000988 |Sampo , pasta gigi| 02-08-2019 |78000 |Aan
    PM000989 |Sabun mandi | 03-08-2019 |45000 |Andi
    PM000990 |daia |03-08-2019 |60000 |Andi

    Id_pelanggan |pelanggan |record
    ———————————————————-
    0098 |andi | 3
    0099 |Aan | 1

    Pak ,mau tanya gimana cara menampilkan jumlah record data pelanggan dari tabel transaksi . Dan di tampilkan di tabel pelanggan. mohon pencerahannya pak

  • cara kita menginput data ke field yang sudah terisi dan data yang kita input bukan mengupdate di dalam field trsebut namun dijumlahkan dengan data yang kita input tadi..? mohon penjelasannya

  • Asslamualaikum mas mau nanya..
    saya punya tabel rata_rata yang didalam nya ad no_peserta, id_kriteria dan rata_rata, dimana tabel ini sudah berelasi dengan tabel peserta dan kriteria.. untuk field rata_rata, saya mau hitung nilainya dengan rumus tertentu. ini potongan kodingnya :
    $ratasqrt =mysql_query(“select * from kriteria”);
    $tt =0;
    while ($dada =mysql_fetch_array($ratasqrt)){
    $tooo =mysql_query(“select * from rata_rata where id_kriteria=’$dada[id_kriteria]’ “);
    $totalkua =0;
    while($rt =mysql_fetch_array($tooo)){
    $kuadrat =$rt[‘rata_rata’] * $rt[‘rata_rata’];
    $totalkua =$totalkua+$kuadrat;
    $hasil[$tt] =sqrt($totalkua);
    }
    $tt++;}
    di tabel rata_rata ini terdapat nilai rata2 peserta laki-laki dan perempuan, saya mau pisahkan perhitungannya untuk laki2 dan perempuan dengan rumus perhitungan yang sama diatas, dan saya mau memanggil si jenis kelaminnya tapi di tabel rata_rata tdk punya field jenis_kelamin, hanya di tabel peserta letak field jenis_kelamin tersebut, tapi tabel peserta nya sudah berelasi dengan tabel rata_rata ini, gimana caranya mas.. mohon bantuannya? bdw fokus di syntax yang ini aja kan mas?
    $tooo =mysql_query(“select * from rata_rata where id_kriteria=’$dada[id_kriteria]’ “);

    note : untuk index tabel rata_rata yaitu, no_peserta dan id_kriteria, keduanya primary dari masing2 tabel peserta dan kriteria, namun tdk ada primary untuk tabel rata_rata ini…

  • 1. TABEL TRANSAKSI =isinya tagihan pembayaran perbulan selama 1 tahun
    noinduk | tahun|bulan | SPP | konsumsi | kegiatan
    —————————————————————–
    1001 | 2019 |1|10000|10000|200000
    1001 | 2019 |2|10000|10000|200000
    1001 | 2019 |3|10000|10000|200000

    2. TABEL BEASISWA = isinya potongan pembayaran perbulan selama 1 tahun
    noinduk | tahun|bulan | SPP | konsumsi|kegiatan
    —————————————————————–
    1001 | 2019 |1|5000|0|0
    1001 | 2019 |2|5000|0|0
    1001 | 2019 |3|5000|0|0

    3. TABEL REKAPTRANSAKSI = isinya rekap pembayaran tagihan yang sudah dibayarkan
    noinduk | tahun|bulan | SPP | konsumsi |kegiatan
    —————————————————————–
    1001 | 2019 |1|5000|10000|0
    1001 | 2019 |2|5000|10000|0
    1001 | 2019 |3|5000|10000|0

    cara menampilkan tagihan perbulan yang belum terbayar setiap siswa bagaimana? perkiraan seperti ini kira2 sqlnya bagaimana ya pak? terimakasih.

    SUM(transaksi)-SUM(rekaptransaksi)-SUM(beasiswa) group by Noinduk, tahun, bulan

  • kd_barang nm_barang hrg_barang
    br001 sabun 5000
    br002 detergen 15000
    br003 beras 100000
    br004 pasta gigi 5000
    br005 gas lpg 3kg 25000
    br006 air mineral 1,5 ltr 5000
    br007 air mineral galoon 25000
    br008 Rokok 25000

    kd_cust nm_cust status
    cs01 Dedi Member
    cs02 Armand Guest
    cs03 Ardi Member
    cs04 Mana Guest
    cs05 Okky Member
    cs06 Jono Guest
    cs07 Alief Member
    cs08 Danang Guest
    cs09 Fitrian Member
    cs10 Sabdo Guest
    cs11 Lani Member

    kd_trx tgl kd_cus kd_barang qty
    trx001 11/21/2019 cs01 br001 1
    trx001 11/21/2019 cs01 br003 5
    trx001 11/21/2019 cs01 br007 5
    trx001 11/21/2019 cs01 br008 2
    trx001 11/21/2019 cs01 br002 2
    trx002 11/21/2019 cs06 br007 1
    trx002 11/21/2019 cs06 br008 1
    trx002 11/21/2019 cs06 br002 1
    trx003 11/21/2019 cs09 br008 10
    trx004 11/21/2019 cs05 br008 2
    trx004 11/21/2019 cs05 br006 1

    Buatlah function untuk menghitung total bayar
    Buatlah function diskon dengan ketentuan :
    jika belanja > 50000 disc 5%
    jika belanja > 100000 disc 10%
    untuk output tampilkan harga yang dikalikan qty beli, total bayar, dan diskon

  • Jika kasusnya seperti ini gimana ya?
    Berada di satu tabel yg tabelnya bernama renja_pendapatan
    Volume| Harga | Jumlah
    5 | 50 | 250 |

    cara mengalikan volume dan harganya gimana ya? totalnya yg jumlah

  • om bagaimana jika sy punya 2 tabel:
    Tabel 1:
    id| id_ruang |Kode_ruang | tipe_pasien | total_TT | terpakai_male |terpakai_female |kosong_male|kosong_female|
    1 | Mawar |0003 | 0011 | 4 | 2 |2 |0 |0 |
    2 | Mawar |0004 | 0011 | 10 | 5 |2 |0 |3 |
    3 | Mawar |0005 | 0011 | 20 | 9 |6 |1 |4 |
    4 | Banteng |0003 | 0011 | 5 | 2 |2 |0 |1 |
    5 | Banteng |0004 | 0011 | 12 | 6 |6 |0 |0 |
    6 | Banteng |0005 | 0011 | 25 | 5 |10 |5 |0 |

    Tabel 2:
    id| Kode_ruang | tipe_pasien | total_TT | terpakai_male |terpakai_female |kosong_male|kosong_female|
    1 | 0003 | 0011 | 0 | 0 |0 |0 |0 |
    2 | 0004 | 0011 | 0 | 0 |0 |0 |0 |
    3 | 0005 | 0011 | 0 | 0 |0 |0 |0 |

    Bisakah Tabel 1 tersebut dari masing2 kode_ruang 0003, 0004 dan 0005 terjumlahkan isinya menjadi satu (SUM) di Tabel 2 dengan menggunakan trigger om? apa trigger yang bisa kite buat supaya TOTAL dari masing2 kolom tersebut dari total_TT, Terpakai_male, terpakai_female, kosong_male dan kosong_female terjumlahkan menjadi TOTAL di tabel ke dua tersebut.

  • Selamat Sore Pak Agus Prawoto Hadi.
    saya mohon bantuannya.
    ini Pak..kodenya enggak mau menampilkan nilai maksimum yang seharusnya.
    jadi hasil perhitungannya tidak valid..

    terimakasih atas bantuannya sebelumnya Pak.

  • mau nanya mas,
    saya punya 2 tabel, tabel SaldoAwal dan tabel Transaksi.

    tbl SaldoAwal :
    +————+——–+——–+——–+————+
    | Tgl | KdAkun | Debet | Kredit | Keterangan |
    +————+——–+——–+——–+————+
    | 2020-06-01 | 1-111 | 0 | 100000 | MODAL |
    | 2020-06-01 | 3-111 | 100000 | 0 | KAS |
    | 2020-06-01 | 1-111 | 0 | 50000 | PENJUALAN |
    | 2020-06-01 | 4-111 | 50000 | 0 | KAS |
    +————+——–+——–+——–+————+

    tbl Transaksi :
    +————+——–+——–+——–+————–+
    | Tgl | KdAkun | Debet | Kredit | Keterangan |
    +————+——–+——–+——–+————–+
    | 2020-06-12 | 1-111 | 10000 | 0 | BIAYA KIRIM |
    | 2020-06-12 | 6-116 | 0 | 10000 | KAS |
    | 2020-06-10 | 1-111 | 0 | 100000 | MODAL |
    | 2020-06-10 | 3-111 | 100000 | 0 | KAS |
    | 2020-06-12 | 1-111 | 0 | 50000 | PENJUALAN |
    | 2020-06-12 | 4-111 | 50000 | 0 | KAS |
    | 2020-06-10 | 1-119 | 0 | 150000 | UTANG DAGANG |
    | 2020-06-10 | 2-113 | 150000 | 0 | PERSEDIAAN |
    +————+——–+——–+——–+————–+

    bagaimana menjumlahkan 2 tabel diatas supaya menjadi :
    +————–+——–+——–+
    | keterangan | Debet | Kredit |
    +————–+——–+——–+
    | BIAYA KIRIM | 10000 | 0 |
    | KAS | 300000 | 10000 |
    | MODAL | 0 | 200000 |
    | PENJUALAN | 0 | 100000 |
    | PERSEDIAAN | 150000 | 0 |
    | UTANG DAGANG | 0 | 150000 |
    +————–+——–+——–+
    terima kasih sebelumnya..

  • Selamat sore mas agus, mau nanya cara menjumlahkan total 2 field dalam 1 tabel yg sama gimana caranya ya?

  • assalamualaikum bg , mau bertanya kalok semisal kita punya tabel dari database laundry

    nama tabel = Transaksi

    No_order | No_Identitas |Tgl_Terima| Tgl_Ambil | Total_Berat | Diskon | Total_Bayar | Admin Id

    kemudian kita pengen membuat suatu trigger dengan logika ketika total_berat keseluruhan dari orderan sudah mencapai nilai batas maksimu 100KG maka akan muncul alert error atau data rusak atau bisa dialihkan ke tanggal terima selanjutnya (h+1)

    itu bagaimana solusinya bg terimakasih 🙂

    • SQL tidak didesain untuk memunculkan pesan error mas, itu bisa di buat di sisi pemrogramannya. Untuk trigger, jika tidak memenuhi kriteria, bisa di beriken nilai kembalian tertentu kemudian nilai tersebut dibaca di sisi pemrograman untuk di terjemahkan menjadi pesan error

  • mas , mau tanya mau mengambil data sebelum dari yang terbesar dalam satu colum ,

    misal ada 1,2,3,4,5 , 2 ingin mengambul 1 = lalu di totalkan , nanti 3 meminta 2 , lalu di totalkan …

    ini bagai mana ya mas ????

  • sebenarya saya sedang tidak mengkombinasikan dengan php , apakah boleh minta tolong untuk di jelaskan dengan bahasa php nya , nnti saya coba artikan

    • Coba ini mas…

      $query = mysqli_query($conn, 'SELECT * FROM data');
      $prev_row = '';
      while ($row = mysqli_fetch_assoc($query)) {
      	if ($prev_row) {
      		$row['data'] + $prev_row;
      	}
      	$prev_row = $row['data'];
      }
  • selamat siang pak. disini saya ingin bertanya perihal database yang berkelanjutan/kontinyu perbulan. (maaf saya awam mengenai hal dunia komputer)
    saya sudah mencoba membuat database di acces dan bisa dibilang sedikit berhasil, karena saya belum paham bagaimana caranya database tsb digunakan perbulan secara kontinyu.
    contohnya:
    * DATA PRODUK BULAN JANUARI:
    NAMA PRODUK | JUMLAH STOK | PENGGUNAAN | STOK AKHIR |
    – PRODUK A | 100 BUAH | 30 BUAH | 70 BUAH |
    – PRODUK B….
    – DST…..
    * DATA PRODUK BULAN FEBRUARI:
    NAMA PRODUK | JUMLAH STOK | PENGGUNAAN | STOK AKHIR |
    – PRODUK A | = STOK AKHIR BULAN JANUARI YAITU 70 BUAH | = PEMAKAIAN BULAN FEBRUARI | = SISA STOK BULAN FEBRUARI |
    – PRODUK B….
    – DST…..
    sebelumnya saya ucapkan terima kasih

  • mas , bagaimana membuat kolom jumlah sama rata-rata , tapi setelah inputan satu minggu dihitung rata rata, kemudian lanjut 7 data lagi baru di jumlahkan

  • Mas, kalau mau menjumlahkan total nilai berdasarkan taggal yang di filter, gimana kira2 ya mass,
    saya sudah coba query seperti ini malah yang dijumlahkan total semua nilai, bukan yang difilter,
    query nya ini :
    \DB::select(“SELECT SUM(masuk) as tot_masuk1 FROM tb_kas_mesjid WHERE tgl_masuk > ‘2005-06-01’ AND tgl_masuk < '2030-01-01' ");

    Terimakasih mas sebelumnya.

  • izin bertanya mas agus, saya memiliki query sebagai berikut:
    SELECT dus.nama_unit_kerja as nama_unit,
    count(if(mp.gol_id=11,mp.nip,0)) as ‘I/a’,
    count(if(mp.gol_id=12,mp.nip,0)) as ‘I/b’,
    count(if(mp.gol_id=13,mp.nip,0)) as ‘I/c’,
    count(if(mp.nip,mp.gol_id=14,0)) as ‘I/d’
    from master_pegawai mp
    left join daf_unit_staf dus on dus.unit_staf_id = mp.unit_staf_id
    where mp.aktif_id =’1′ and (mp.statpeg_id=’1′ or mp.statpeg_id=’2′ or mp.statpeg_id=’3′)
    and dus.nama_unit_kerja !=”
    GROUP BY nama_unit_kerja

    hasil yang saya inginkan adalah menghitung jumlah pegawai dalam golongan tertentu pada tiap2 unitkerja tertenu.
    namun dengan query tersebut, saya mendapatkan hasil di tiap golongan pada tiap unit kerjanya 1.
    tebel tersebut dimaksudkan untuk melihat statistik dimana didalam unit kerja terdapat sejumlah pegawai dalam golongan tertentu.

    mohon pencerahannya

  • SELECT a.nama_akunkgn,a.lap_keuangan,
    b.kode_subkgn,b.nama_subkgn,b.pos_saldo,
    SUM(IF(d.tgl_jurnalkgn BETWEEN ‘2019-01-01’ AND ‘2019-12-31’, c.jumlah_debet, NULL)),
    SUM(IF(d.tgl_jurnalkgn BETWEEN ‘2019-01-01’ AND ‘2019-12-31’, c.jumlah_kredit, NULL))
    FROM tbl_akunkgn a
    LEFT JOIN tbl_subkgn b
    ON a.id_akunkgn=b.id_akunkgn
    LEFT JOIN tbl_bbkgn c
    ON b.id_subkgn=c.id_subkgn
    LEFT JOIN tbl_jurnalkgn d
    ON c.id_jurnalkgn=d.id_jurnalkgn
    GROUP BY b.id_subkgn

    data saya ada 30 ribu,, tp kok reloadnya bisa lama ya, bisa di optimasi ga pak, terimksh sebelumnya

  • mas permisi saya mau tanya jika saya cuman ingin menampilkan transaksi dari id pelanggan 1, dan jumlah harga total dari pelanggan id 1 bagaimana ya ?

    +--------------+---------+----------+----------+---------+
    | id_pelanggan | nama    | jml_2016 | jml_2015 | TOTAL   |
    +--------------+---------+----------+----------+---------+
    |            1 | Alfa    |  5225000 |  2450000 | 7675000 |
    |            1 | Alfa    |  1500000 |  4000000 | 5500000 |
    |            3 | Charlie |  6499000 |  2730000 | 9229000 |
    |            2 | Delta   |  2900000 |   775000 | 3675000 |
    +--------------+---------+----------+----------+---------+
    
  • mas bagaimana jika nilai yang dijumlah mempunya nilai 2 dibelakang koma,
    misalkan
    1000,34
    5000,50
    hasil 6000,84

  • ijin bertanya..
    bagaimana cara menjumlahkan data yg sudah di filter?
    ini codingan saya

    $countmesin1 = DB::table(‘t_prod_knit_202206’)
    ->select(DB::raw(‘COUNT(Mesin), Mesin’))
    ->where(‘CShift’, ‘=’, ‘1’)
    ->groupBy(‘Mesin’)
    ->get();

    $shift1 = DB::table(‘t_prod_knit_202206’)
    ->select(DB::raw(‘SUM(Kuantum) as Tprod1 , COUNT($countmesin1) as Tmesin1,TglDopping’))
    ->where(‘CShift’, ‘=’, ‘1’)
    ->groupBy(‘TglDopping’)
    ->get();

  • Izin bertanya Mas Agus
    Saya punya data sbb:
    Departments
    Berisi data master department

    ID Name
    1 Sales
    2 Technology

    Employees

    Berisi data master employee, beserta informasi department dari setiap employee
    ID Name DepartmentiD
    1 Jonn 1
    2 Jane 1
    3 Jack 2

    Cients

    Berisi data master client, beserta informasi employee yang menangani client tsb

    1D Name EmployeelD
    1 PT ABC 1
    2 PTBCD 1
    3 PT.CDE 1
    4 PT DEF 2

    orders
    Berisi data order dari setiap client
    OrderiD Date ClientiD Total
    1 2021.11.01 1 10.000.000
    2 2021.11.01 1 1.000.000
    3 2021-11-15 2 7.500.000
    4 2021-11-16 1 3.500.000
    5 2021-11-20 3 22,500.00
    6 2021-11-23 1 6.750.000
    7 2021-11-20 4 13.500.000
    8 20211222 3 8.900.000
    9 2021.12.09 2 12.750.000
    10 20211210 4 23,900.00
    11 20211201 3 35.000.000
    12 2021-1208 4 1.000.000
    13 2021.12.09 1 3.750.000
    14 20211223 1 5.500.000
    15 2022-01-22 2 9.500.000
    16 2021.11.27 2 2.700.000

    PERTANYAANNYA
    1. query untuk mendapatkan client dengan nilai total penjualan paling rendah dan outputnya seperti apa
    2 query untuk mendapatkan client-client dengan nilai total penjualan tertinggi di setiap bulan output seperti apa
    3. query untuk mendapatkan top employee (employee yang memiliki client dengan total penjualan tertinggi) selama tahun 2021. Nilai total penjualan yang dihasilkan employee tsb, harus disertakan dalam hasil query.

    Terima Kasih atas bantuannya

    • Untuk client dengan penjualan terendah atau tertinggi perbulan bisa menggunakan sum kemudian di group berdasarkan bulan misal:

      SELECT clients.*, SUM(total) FROM orders
      LEFT JOIN clients ON orders.ClientID = clients.EmployeeID
      GROUP BY MONTH(date)
  • Mas saya ingin tampilan nya seperti ini
    1. A (header 1) -> jumah header 2
    2. A.1 (header 2) -> jumlah header 3
    3. A.1.a (header 3) -> jumlah detail
    4 A.1.a.detail (detail) -> harga
    Mohon solusi nya mas, untuk penjumlahan dan rancangan database nya..

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com