Суммируйте значение на основе строки и делите это значение на столбец - PullRequest
0 голосов
/ 02 января 2019

Мне нужна помощь для расчета суммы (значения) по строкам.

, поэтому у меня есть такие данные

enter image description here

и яхочу сумму на основе строк, как это

enter image description here

после этого я хочу разделить данные на основе суммы (строк)

такдля 1 [harga] не будет таким (результаты = 1 / 4.6) и т. д., может быть, кто-то может мне помочь?

<table class="table table-bordered">
       <tr>
          <th>No</th>
          <th>Alternatif</th>
             <?php
                $dd = $this->Mymod->ViewData('kriteria'); 
                foreach($dd as $i):
             ?>
          <th><?= $i['kriteria_nama']; ?></th>
             <?php endforeach; ?>
        </tr>
             <?php
                $gc= $this->db->query("SELECT * from alternatif")->result_array();
                $dbobot=array();
                $no=0;
                foreach ($gc as $cc):
                $no++;
             ?>
          <tr>
          <td><?= $no; ?></td>
          <td><?= $cc['alternatif_nama']; ?></td>
             <?php
                $de= $this->db->query("SELECT * from nilai where alternatif_kode = '$cc[alternatif_kode]'")->result_array();
                foreach ($de as $cdd):
                $ef= $this->db->query("SELECT max(nilai_nilai) as maxNilaiK  from nilai where kriteria_kode = '$cdd[kriteria_kode]'")->row_array();
                $Mnormal = $cdd['nilai_nilai'] / $ef['maxNilaiK']
             ?>
          <td><?= $Mnormal; ?></td>
          <?php
          endforeach; ?>
          </tr>
          <?php 
          endforeach;
          ?>
    </table> 

обновление: так что на основе моих изображений у меня есть таблица,на моем столе присутствуют No, ALternatif, Harga, Kapasitas, Luas, Jenis, Fasilitas, Jarak.И в каждой строке есть данные.

1. arrayGedungA ([1],   [0.25], [1],   [0.4], [0.25], [1]);
2. arrayGedungB ([0.4], [1],    [0.4], [1],   [1],    [0.8]);
3. arrayGedungC ([0.2], [1],    [0.4], [1],   [0.5],  [0.8]);
4. arrayGedungD ([0.4], [1],    [0.8], [1],   [1],    [0.4]);
5. arrayGedungE ([1],   [1],    [0.8], [0.2], [0.5],  [0.8]);
6. arrayGedungF ([0.8], [1],    [0.4], [1],   [0.5],  [0.8]);
7. arrayGedungG ([0.8], [0.5],  [0.4], [1],   [0.5],  [0.2]);

мои вопросы

  1. я хочу подвести итог harga, kapasitas, luas, jenis, fasilitas и jarak сверху вниз.

, поэтому данные будут такими:

Harga = (1 + 0.4 + 0.2 + 0.4 + 1 + 0.8 + 0.8) is 4.6
Kapasitas = (0.25 + 1 + 1 + 1 + 1 + 1 + 0.5) is 5.75
Luas = (1 + 0.4 + 0.4 + 0.8 + 0.8 + 0.4 + 0.4) is 4.2
Jenis = (0.4 + 1 + 1 + 1 + 0.2 + 1 + 1) is 5.6
Fasilitas = (0.25 + 1 + 0.5 + 1 + 0.5 + 0.5 + 0.5) is 4.25
Jarak = (1 + 0.8 + 0.8 + 0.4 + 0.8 + 0.8 + 0.2 ) is 4.8

после того, как у нас есть сумма (строки), нам нужно их разделить.так будет

1. arrayGedungA ([1/4.6],   [0.25/5.75], [1/4.2],   [0.4/5.6], [0.25/4.25], [1/4.8]);
2. arrayGedungB ([0.4/4.6], [1/5.75],    [0.4/4.2], [1/5.6],   [1/4.25],    [0.8/4.8]);
3. arrayGedungC ([0.2/4.6], [1/5.75],    [0.4/4.2], [1/5.6],   [0.5/4.25],  [0.8/4.8]);
4. arrayGedungD ([0.4/4.6], [1/5.75],    [0.8/4.2], [1/5.6],   [1/4.25],    [0.4/4.8]);
5. arrayGedungE ([1/4.6],   [1/5.75],    [0.8/4.2], [0.2/5.6], [0.5/4.25],  [0.8/4.8]);
6. arrayGedungF ([0.8/4.6], [1/5.75],    [0.4/4.2], [1/5.6],   [0.5/4.25],  [0.8/4.8]);
7. arrayGedungG ([0.8/4.6], [0.5/5.75],  [0.4/4.2], [1/5.6],   [0.5/4.25],  [0.2/4.8]);

, а результаты будут

a

1 Ответ

0 голосов
/ 03 января 2019

В зависимости от базы данных (и с использованием предложения Дхармана) это работает в Oracle:

SELECT harga,
       harga / SUM (harga) OVER () harga_sum,
       kapasitas,
       kapasitas / SUM (kapasitas) OVER () kapasitas_sum
  FROM nilai
 WHERE ...

Обратите внимание, что OVER () должен указываться после каждого SUM (...) и перед именами столбцов с псевдонимами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...