Суммируйте значение на основе строки и делите это значение на столбец

Вопрос задан: 7 месяцев назад Последняя активность: 7 месяцев назад
up 0 down

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

так что у меня есть такие данные

Суммируйте значение на основе строки и делите это значение на столбец

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

Суммируйте значение на основе строки и делите это значение на столбец

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

так нет 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 = (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]);

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

Суммируйте значение на основе строки и делите это значение на столбец

1 ответ

up 0 down

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

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

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