SQL de toplama, ortalama bulma

emubaltaci

Rektör
Emektar
Katılım
21 Kasım 2005
Mesajlar
18,863
Reaksiyon puanı
129
Puanları
243
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..

Kod:
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
 

Turab Garip

Dekan
Emektar
Müdavim
Katılım
30 Mayıs 2007
Mesajlar
6,902
Reaksiyon puanı
181
Puanları
1,243
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:

Kod:
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:

Kod:
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

Rektör
Emektar
Katılım
21 Kasım 2005
Mesajlar
18,863
Reaksiyon puanı
129
Puanları
243
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:

Kod:
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:

Kod:
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
 

Turab Garip

Dekan
Emektar
Müdavim
Katılım
30 Mayıs 2007
Mesajlar
6,902
Reaksiyon puanı
181
Puanları
1,243
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.)

Kod:
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

Rektör
Emektar
Katılım
21 Kasım 2005
Mesajlar
18,863
Reaksiyon puanı
129
Puanları
243
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
 
Üst