• 24-12-2022, 14:13:01
    #1
    Selamlar,
    PHP ile günlerin ayrı ayrı beğeni ortalamalarını alabiliyorum.
    Bu konuda geçen bana yardımcı olan @sahinbey; 'e teşekkür ederim.
    Bu seferde yönetime rapor sunmak için yıl içinde olan ayları ayırıp teker teker toplam oy oranlarını aşağıdaki kod ile listeliyorum.
                    $sql = "SELECT COUNT(*) as num_rows, EXTRACT(YEAR FROM `tarih`) as year, EXTRACT(MONTH FROM `tarih`) as month
                            FROM yemekhane_anket
                            GROUP BY year, month;";
                    $stmt = $conn->prepare($sql);
                    $stmt->execute();
    
                    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
                    $rows = $stmt->fetchAll();
    
                    foreach ($rows as $row) {
                        echo "Toplam Oy: " . $row['num_rows'] . " - Yıl: " . $row['year'] . " - Ay: " . $row['month'] . " </br>";
                    }

    Burada toplam oyları listeliyorum şimdi ihtiyacım olan memnuniyet oranı = "1" olan kullanıcıları saydırmak bunuda WHERE `memnuniyet_durumu` = '1' komutu ile yapabiliyorum.
    Ayların doğru beğeni yüzdelerine ulaşmak için şu mantığı izlemem gerekiyor sanırım; memnuniyet durumu = "1" * 100
    Kafamda tam olarak mantığı oturtturamadım, nasıl bir yol izlemem gerekiyor?


    Sorunu altta ki kod ile çözdüm.

                    $sql = "SELECT COUNT(*) as total_rows, SUM(CASE WHEN `memnuniyet_durumu` = 1 THEN 1 ELSE 0 END) as num_satisfied, EXTRACT(YEAR FROM `tarih`) as year, EXTRACT(MONTH FROM `tarih`) as month
                            FROM yemekhane_anket
                            GROUP BY year, month;";
                    $stmt = $conn->prepare($sql);
                    $stmt->execute();
    
                    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
                    $rows = $stmt->fetchAll();
    
                    foreach ($rows as $row) {
                        $percentage = ($row['num_satisfied'] / $row['total_rows']) * 100;
                        echo "Yıl: <b>" . $row['year'] . "</b> - Ay: <b>" . $row['month'] . "</b> - Toplam Oy: <b>" . $row['total_rows'] . "</b> - Beğeni Oy Sayısı: <b>" . $row['num_satisfied'] . "</b> - Beğeni Yüzdesi: <b>" . $percentage . "%</b> </br>";
                    }
  • 24-12-2022, 14:15:00
    #2
    Bütün hepsini toplayıp 30'a bölseniz olmaz mı? Tam olarak problemi anlayamadım hocam.
  • 24-12-2022, 14:17:34
    #3
    Veri tabanindan alicaksaniz direk AVG() kullanabilirsiniz
  • 24-12-2022, 14:18:42
    #4
    Mücahit adlı üyeden alıntı: mesajı görüntüle
    Bütün hepsini toplayıp 30'a bölseniz olmaz mı? Tam olarak problemi anlayamadım hocam.
    yunusemre34 adlı üyeden alıntı: mesajı görüntüle
    Veri tabanindan alicaksaniz direk AVG() kullanabilirsiniz
    Konuyu tam gönderdiğim sırada sanırım sunucu bazlı bir problem oldu ve içeriğin belli bir kısmını konu olarak açtı.
    Şuan tekrar düzelttim konuyu, sorunu tam olarak açıkladım.
  • 24-12-2022, 14:43:41
    #5
    turansonkaya adlı üyeden alıntı: mesajı görüntüle
    Selamlar,
    PHP ile günlerin ayrı ayrı beğeni ortalamalarını alabiliyorum.
    Bu konuda geçen bana yardımcı olan @sahinbey; 'e teşekkür ederim.
    Bu seferde yönetime rapor sunmak için yıl içinde olan ayları ayırıp teker teker toplam oy oranlarını aşağıdaki kod ile listeliyorum.
                    $sql = "SELECT COUNT(*) as num_rows, EXTRACT(YEAR FROM `tarih`) as year, EXTRACT(MONTH FROM `tarih`) as month
                            FROM yemekhane_anket
                            GROUP BY year, month;";
                    $stmt = $conn->prepare($sql);
                    $stmt->execute();
    
                    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
                    $rows = $stmt->fetchAll();
    
                    foreach ($rows as $row) {
                        echo "Toplam Oy: " . $row['num_rows'] . " - Yıl: " . $row['year'] . " - Ay: " . $row['month'] . " </br>";
                    }

    Burada toplam oyları listeliyorum şimdi ihtiyacım olan memnuniyet oranı = "1" olan kullanıcıları saydırmak bunuda WHERE `memnuniyet_durumu` = '1' komutu ile yapabiliyorum.
    Ayların doğru beğeni yüzdelerine ulaşmak için şu mantığı izlemem gerekiyor sanırım; memnuniyet durumu = "1" * 100
    Kafamda tam olarak mantığı oturtturamadım, nasıl bir yol izlemem gerekiyor?
    Nasıl yapabilirim?
    Rowcount yapın ardından ise döngü içerisinde oyları toplayın ve rowcount değerine bölün
  • 24-12-2022, 14:43:46
    #6
    Hocam yine dediğim gibi sql de AVG İle hepsini toplayip ortalamasini zaten aliyor dedigim kavrami arastirin lutfen
  • 24-12-2022, 14:44:47
    #7
    OneGui adlı üyeden alıntı: mesajı görüntüle
    Rowcount yapın ardından ise döngü içerisinde oyları toplayın ve rowcount değerine bölün
    yunusemre34 adlı üyeden alıntı: mesajı görüntüle
    Hocam yine dediğim gibi sql de AVG İle hepsini toplayip ortalamasini zaten aliyor dedigim kavrami arastirin lutfen
    Sorunu chat.openai ile birlikte çözdük.
    İlk mesajı güncelledim.
    İlginize teşekkürler.