• 17-12-2022, 11:16:30
    #1
    Selamlar,
    Şirkette aktif olarak kullanmış olduğumuz Intranet sisteminde günlük olarak görüntülenen yemek menüsü bulunuyor.
    Bu menüler panel üzerinden giriş yapılıyor.
    Yemekhane'de ise günlük olarak tablet üzerinden oylama yapıyoruz. (3 = İyileştirilmeli, 1 = Güzel) olarak değerlendiriliyor. Veritabanı örneğine altta görebilirsiniz.

    Benim yapmak istediğim ise ayrı bir sayfa oluşturacağım. Burada içinde bulunduğumuz ayın yemek menüsünü göreceğiz ve günlere ait oyların toplam beğenme yüzdeleri ve kötü oranlarını görebileceğim.
    Yani yapmak istediğim olayı aşağıda ki resimden daha net anlayabilirsiniz.
    Mantığını çözemedim, her bir oy ayrı bir satır (veritabanında) olarak gözüktüğü için nasıl yapabileceğimi anlayamadım.
  • 17-12-2022, 11:20:40
    #2
    select * from tablo_adi where tarih like '2022-12-16%'

    bu şekilde bir güne ait kayıtları çekip ortalamayı çıkarabilirsiniz.

    ancak yeni bir tablo açıp, her oylamada sayılar bir artacak şekilde bir sistem yapmanız daha hızlı olacaktır.
  • 17-12-2022, 12:13:17
    #3
    Select tarih, Sum(memnuniyet_durumu) as toplam, count(id) as oyveren_sayisi from tablo group by(tarih) order by tarih desc

    Döngü içersinde
    Puan = toplam / oyveren_sayisi
  • 19-12-2022, 00:12:41
    #5
    Şöyle varsayım yapacak olursam;

    SELECT yl.yemekler, COUNT(b.begeni) as toplam_begeni,
           ROUND((SUM(CASE WHEN b.begeni = 3 THEN 1 ELSE 0 END) / COUNT(b.begeni)) * 100, 2) as iyi_yuzdesi,
           ROUND((SUM(CASE WHEN b.begeni = 1 THEN 1 ELSE 0 END) / COUNT(b.begeni)) * 100, 2) as kotu_yuzdesi
    FROM yemek_listesi yl
    LEFT JOIN begeniler b ON yl.id = b.yemek_id
    WHERE yl.tarih = '2022-12-18'
    GROUP BY yl.yemekler
    ORDER BY toplam_begeni DESC;


    Sonuç;




    yani memnuniyet_durumu tablosuna bir sütun daha dahil etmeniz gerekecek oda yemek listesinin ID numarasını, sonra listede vermiş olduğum örnek sorguyu kullanırsınız yüzdeleri ve toplam beğenileri yazdırabilirsiniz