Tek SQL ile Yüzde Değeri Almak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Tek SQL ile Yüzde Değeri Almak
acces veritabanındaki secenek tablomda bulunan cevapsayi alanının yüzdesini almak istiyorum.
secenek cevapsayi
a) seviyorum 15
b) sevmiyorum 12
c) fikrim yok 9
böyle bir yapıda istediğim (tek sql sorgusu ile) her şıkkın yüzdesini almak. toplam cevapsayısı 36 buna göre
mesela a şıkkının yüzdesini almak için 15*100/36 nın sonucunu nasıl alabilirim.
Select anketid, secenek, cevapsayi, (cevapsayi) * 100 / Sum(cevapsayi) AS YUZDE
From anketsecenek WHERE ([AnketId] = ?)
group by anketid, Secenek, cevapsayi
SUM ALANI BURDA HATA VERİYOR BUNU NASIL YAZABİLİRİZ. HERKESE SAYGILAR SUNUYORUM.
secenek cevapsayi
a) seviyorum 15
b) sevmiyorum 12
c) fikrim yok 9
böyle bir yapıda istediğim (tek sql sorgusu ile) her şıkkın yüzdesini almak. toplam cevapsayısı 36 buna göre
mesela a şıkkının yüzdesini almak için 15*100/36 nın sonucunu nasıl alabilirim.
Select anketid, secenek, cevapsayi, (cevapsayi) * 100 / Sum(cevapsayi) AS YUZDE
From anketsecenek WHERE ([AnketId] = ?)
group by anketid, Secenek, cevapsayi
SUM ALANI BURDA HATA VERİYOR BUNU NASIL YAZABİLİRİZ. HERKESE SAYGILAR SUNUYORUM.
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.
Hz.Muhammed (S.A.V.)

Hz.Muhammed (S.A.V.)

- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Tek SQL ile Yüzde Değeri Almak
Ack isimli bir alan ve tbl isimli access tablosunda aşağıdaki sorguyu çalıştırdım yapısını incelemeni tavsiye ederim.
select *, (Sayi*100/Toplam) as Yuzde from (select *, (select count(*) from tbl) as Toplam from (select Ack, count(*) as Sayi from tbl group by Ack) as Genel) as Sonuc
select *, (Sayi*100/Toplam) as Yuzde from (select *, (select count(*) from tbl) as Toplam from (select Ack, count(*) as Sayi from tbl group by Ack) as Genel) as Sonuc
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Tek SQL ile Yüzde Değeri Almak
burda toplam alanı elimizde yok ancak bizim cevapsayi alanlarını toplayarak bu aldığımız toplamı ilk sorumda sorduğum yüzde işlemine sokmamız gerekiyor.sabanakman yazdı:Ack isimli bir alan ve tbl isimli access tablosunda aşağıdaki sorguyu çalıştırdım yapısını incelemeni tavsiye ederim.
select *, (Sayi*100/Toplam) as Yuzde from (select *, (select count(*) from tbl) as Toplam from (select Ack, count(*) as Sayi from tbl group by Ack) as Genel) as Sonuc
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.
Hz.Muhammed (S.A.V.)

Hz.Muhammed (S.A.V.)

- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Tek SQL ile Yüzde Değeri Almak
Dikkat et, toplam alanı var diye açıklama yapmadım. Ack alanına sahip bir tbl tablosu dedim
. Sorgudaki toplam alanının nereden geldiğine dikkat et. Sağ tarafta kalın, mavi ve altı çizili olarak belirttim. Toplam sorgudan hesaplatılarak getiriliyor.
tbl tablo adı ve sadece Ack Metin alanı var başka hiç bir alanı yok. Tek alanlı bir tablo.şeklinde kayıtlardan ibaret olsun ve verdiğim sorguyu bu tablo üzerinden çalıştırırsan, her kayıttan kaç çeşit olduğunu, toplam kaç adet olduğunu ve bu iki değerin birbirine oranının yüzde kaç olduğunu bulan sorgudur verdiğim kod
. Örnek kayıtları çalıştır ve gelen sorgu sonucununşeklinde olduğunu göreceksin. Tbl tablosunun sadece Ack isimli tek bir alandan oluşmasına rağmen bazı alt sorgularla istenen bir çok değer elde edilebilmektedir, bu seni yanıltmasın. Denersen anlayacaksın. Kolay gelsin.

Aşağıdaki şekilde bir tablo oluştur dene istersen..:sabanakman yazdı:Ack isimli bir alan ve tbl isimli access tablosunda aşağıdaki sorguyu çalıştırdım yapısını incelemeni tavsiye ederim.
select *, (Sayi*100/Toplam) as Yuzde from (select *, (select count(*) from tbl) as Toplam from (select Ack, count(*) as Sayi from tbl group by Ack) as Genel) as Sonuc
tbl tablo adı ve sadece Ack Metin alanı var başka hiç bir alanı yok. Tek alanlı bir tablo.
Kod: Tümünü seç
Ack
--------------
Seviyom
Bilmem
Seviyom
Sevmiyom
Seviyom
Sevmiyom
Bilmem
Seviyom
Bilmem

Kod: Tümünü seç
Yuzde | Toplam | Ack | Sayi |
------|--------|----------|------|
33,33 | 9 | Bilmem | 3 |
44,44 | 9 | Seviyom | 4 |
22,22 | 9 | Sevmiyom | 2 |
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Tek SQL ile Yüzde Değeri Almak
şaban abi senin kodlarına bakarak kendime uyarlamaya çalıştım aşağıdaki gibi ancak from yantümcesinde söz dizimi hatası verdi.
select *, (CevapSayi*100/Toplam) as Yuzde from
select *, (select sum(CevapSayi) from anketsecenek) as Toplam
from anketsecenek
group by cevapsayi
select *, (CevapSayi*100/Toplam) as Yuzde from
select *, (select sum(CevapSayi) from anketsecenek) as Toplam
from anketsecenek
group by cevapsayi
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.
Hz.Muhammed (S.A.V.)

Hz.Muhammed (S.A.V.)

- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Tek SQL ile Yüzde Değeri Almak
Tablonun alanlarını ve kayıtlarını tam tarif edebilir misin? Ayrıca sorgunda parantezler konusunda sıkıntı olabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Tek SQL ile Yüzde Değeri Almak
abi kodu aşağıdaki gibi düzenlediğimde çıktısı altındaki gibi geliyor. ancak burda şu sorun var toplam bu
WHERE ([AnketId] = ?) için sadece bu id ye eşit olanları bir arada toplaması gerekirken tüm idlerin toplamını alıyor.
sayi alanı gerek değil sorun değil visible false yaparım. ancak WHERE ([AnketId] = ?) ye göre toplamı sadece bu idlere ait olanların toplamını aldırabilirsek olacak abi. kodun son durumu
select *, (CevapSayi*100/Toplam) as Yuzde from (select *, (select sum(CevapSayi) from anketsecenek) as Toplam from (select Cevapsayi, count(*) as Sayi from anketsecenek
WHERE ([AnketId] = ?)
group by Cevapsayi) as Genel) as Sonuc
yüzde---toplam -- cevapsayi --
1,7 ---2552 ----44 -- 1
2.5 --2552 -- 66--- 1
21.7---2552-- 555 ---1
WHERE ([AnketId] = ?) için sadece bu id ye eşit olanları bir arada toplaması gerekirken tüm idlerin toplamını alıyor.
sayi alanı gerek değil sorun değil visible false yaparım. ancak WHERE ([AnketId] = ?) ye göre toplamı sadece bu idlere ait olanların toplamını aldırabilirsek olacak abi. kodun son durumu
select *, (CevapSayi*100/Toplam) as Yuzde from (select *, (select sum(CevapSayi) from anketsecenek) as Toplam from (select Cevapsayi, count(*) as Sayi from anketsecenek
WHERE ([AnketId] = ?)
group by Cevapsayi) as Genel) as Sonuc
yüzde---toplam -- cevapsayi --
1,7 ---2552 ----44 -- 1
2.5 --2552 -- 66--- 1
21.7---2552-- 555 ---1
En son hacikisi tarafından 20 Haz 2008 05:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.
Hz.Muhammed (S.A.V.)

Hz.Muhammed (S.A.V.)

Re: Tek SQL ile Yüzde Değeri Almak
ARKADAŞLAR SORUNU AŞAĞIDAKİ GİBİ HALLETTİM ARKADAŞLARA FAYDALI OLMASI DİLEĞİYLE. ŞABAN ABİMİN KODUNDAN HAREKETLE TABİ. ÇOK TŞK. EDERİM ŞABAN ABİ.
select *, (CevapSayi*100/Toplam) as Yuzde from (select *, (select sum(CevapSayi) from anketsecenek C WHERE ([C.AnketId] = ?) ) as Toplam from (select Cevapsayi, secenek from anketsecenek A
WHERE ([A.AnketId] = ?)
group by Cevapsayi, secenek) as Genel) as Sonuc
select *, (CevapSayi*100/Toplam) as Yuzde from (select *, (select sum(CevapSayi) from anketsecenek C WHERE ([C.AnketId] = ?) ) as Toplam from (select Cevapsayi, secenek from anketsecenek A
WHERE ([A.AnketId] = ?)
group by Cevapsayi, secenek) as Genel) as Sonuc
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.
Hz.Muhammed (S.A.V.)

Hz.Muhammed (S.A.V.)

Re: Tek SQL ile Yüzde Değeri Almak
Bu işlemi tek field için değilde 1 den fazla field için nasıl geliştirebiliriz acaba?
Re: Tek SQL ile Yüzde Değeri Almak
nasıl bir tablo yapın var ?
Re: Tek SQL ile Yüzde Değeri Almak
yukarıdaki konu ile yakın birbirine.
orda cevap anahtrına göre yüzde alınıyordu.
bende ise engelli vatandaş yüzdesi,ailereislerinin gelir yüzdesi ve daha alanda var.ama önemli olan bunları tek bir sql cümlesinde yaptırmam
galiba iyi anlatamadım.msn den falan görüşebilirmiyiz
orda cevap anahtrına göre yüzde alınıyordu.
bende ise engelli vatandaş yüzdesi,ailereislerinin gelir yüzdesi ve daha alanda var.ama önemli olan bunları tek bir sql cümlesinde yaptırmam
galiba iyi anlatamadım.msn den falan görüşebilirmiyiz
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Tek SQL ile Yüzde Değeri Almak
msn den olmaz
. Tablom şu, istediğim ise budur diye basit bir örnek vermeniz yeterli.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Tek SQL ile Yüzde Değeri Almak
o zaman öbür tarafta görüşürüzsabanakman yazdı:msn den olmaz. Tablom şu, istediğim ise budur diye basit bir örnek vermeniz yeterli.

şaka bi yana hallettim ya saolun ilgi ve alaka için