İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Yazılım
  4. Diğer Yazılım Konuları
Diğer Yazılım Konuları

SQL de toplama, ortalama bulma

emubaltaci05.09.20084 cevap17.872 görüntüleme
#1
arkadaslar bu benim tablom



sorularımın cevab aralıgı 0-4 arasında degerler.. ben bu tabloda her bir soru değerlerini toplayıp 4 e bölerek ortalama olarak o soruya 4 üzerinden kaç verildigini bulabiliyorum bu kodlarla..
SELECT DISTINCT 'Anket Değerlendirmesi', 
(select sum(soru01)/4 from anket),
 (select sum(soru02)/4 from anket),
 (select sum(soru03)/4 from anket),
 (select sum(soru04)/4 from anket), 
(select sum(soru05)/4 from anket)
FROM anket;
çıktısıda bu şekilde oluyor


benim istedigim işlemin matematiksel dökümü su sekilde

[{(top.(soru1)}/4)+({top.(soru2)}/4)+({top.(soru3)}/4)+({top.(soru4)}/4)+({top.(soru5)}/4)]/5
Cevaplar
#2
Gerekli matematiksel düzenlemeyi yapınca, yani hangi işlem hangi sırada, gerekli parantezleri koydukça, tek satırda bu işlemi yapabilirsin. Şu şekilde:
SELECT (((sum(soru01)/4)+(sum(soru02)/4)+(sum(soru03)/4)+(sum(soru04)/4)+(sum(soru05)/4))/5) FROM anket


Eğer karışık gelirse, değişkenler yaratarak yapmak daha kolay ve anlaşılır. Şu şekilde olabilir:


SET @soru01 = ((select sum(soru01)/4 from anket));
SET @soru02 = ((select sum(soru02)/4 from anket));
SET @soru03 = ((select sum(soru03)/4 from anket));
SET @soru04 = ((select sum(soru04)/4 from anket));
SET @soru05 = ((select sum(soru05)/4 from anket));
SELECT ((@soru01+@soru02+@soru03+@soru04+@soru05)/5);


Her iki sorguda da ekrana aritmetik ortalama gelecek. Kodu denedim, eğer istediğin işlemi doğru anladıysam doğru sonuç vermesi lazım.
emubaltaci Konuyu açan
#3
Elmacik dedi: ↑
Gerekli matematiksel düzenlemeyi yapınca, yani hangi işlem hangi sırada, gerekli parantezleri koydukça, tek satırda bu işlemi yapabilirsin. Şu şekilde:
SELECT (((sum(soru01)/4)+(sum(soru02)/4)+(sum(soru03)/4)+(sum(soru04)/4)+(sum(soru05)/4))/5) FROM anket
Eğer karışık gelirse, değişkenler yaratarak yapmak daha kolay ve anlaşılır. Şu şekilde olabilir:


SET @soru01 = ((select sum(soru01)/4 from anket));
SET @soru02 = ((select sum(soru02)/4 from anket));
SET @soru03 = ((select sum(soru03)/4 from anket));
SET @soru04 = ((select sum(soru04)/4 from anket));
SET @soru05 = ((select sum(soru05)/4 from anket));
SELECT ((@soru01+@soru02+@soru03+@soru04+@soru05)/5);
Her iki sorguda da ekrana aritmetik ortalama gelecek. Kodu denedim, eğer istediğin işlemi doğru anladıysam doğru sonuç vermesi lazım.
bu kod access ta calısmıyor. 4 e degilde soru1 e girilen veri sayısı kadar nasıl böldürebiliriz
yani count(sayı01) yaptırıp böldürmek
#4
Sen ilk SQL konusunu açtığında şüphelenmiştim, "hangi SQL" diye soracaktım hatta, ama unutmuşum. :) Access midir, MySQL midir, MSSQL midir, Oracle midir nedir diye. İki kod verdim, ilkinin Access'te çalışması lazım.

Şimdi Access 2003 ile senin tablonun aynısını kendi bilgisayarımda oluşturdum, üstteki mesajımda verdiğim SQL sorgusunu çalıştırdım, bende çalışıyor. :-s

Sen hata mı alıyorsun? Çalışmadı demişsin ama çalışmadı derken tam olarak nasıl bir etkileşim aldın Access'ten?

Ayrıca satır sayısına da bölebilirsin. Bunu da Access 2003'te denedim, sağlamasını yaptım. Şu şekilde: (Daha anlaşılır olsun dye alt alta yazıyorum.)
SELECT ((
  (sum(soru01)/count(soru01))+
  (sum(soru02)/count(soru02))+
  (sum(soru03)/count(soru03))+
  (sum(soru04)/count(soru04))+
  (sum(soru05)/count(soru05))
)/5)
FROM anket


Yani sadece 4'ü silip yerine count(sutun_adi) yazdım.
emubaltaci Konuyu açan
#5
yukardaki kodun için geçersiz SQL deyimi diyor, delete, select update komutları beklenyior die hata veriyor
asagıdaki kodu denedim calıstı tsk.ler :D

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.