SQL cümlesine yardım eder misiniz

  • Konbuyu başlatan Konbuyu başlatan frezmb
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

frezmb

Aktif Üye
Mesajlar
183
kimlik isminde tabloda
ad, soyad, cinsiyet (1,0), dogum_yeri alanlarım var
illere göre kız erkek sayılarını istiyorum

il adı erkek kadın
ankara 5 4
istanbul 7 10
....

gibi
her yazışımda ya sonuç alamadım ya hata aldım.
Fikir verirseniz sevinirim
 
select * from kimik dersek hepsini çekeriz

select dogum_yeri,cinsiyet from kimlik dersek gene bütün kayıtlar gelir ama iki alanı çekmiş oluruz

belki bu olur
SELECT dogum_yeri AS il,
(SELECT COUNT(*) FROM kimlik WHERE dogum_yeri=il AND cinsiyet=1) as erkek_toplam,
(SELECT COUNT(*) FROM kimlik WHERE dogum_yeri=il AND cinsiyet=0) AS kiz_toplam
FROM kimlik

eğer bu satır hatasız çalışırsa il , erkek_toplam, kiz_toplam adında üç değeri alabilirsin.
açıkçası bu satırın noktalama işaretlerinde hata olmazsa çözüm olacağını söyleye bilirim ama işte tırnaklar falan iyi ayarlamalısın. ben genelde dakikalarca hatta 20-30 dk deniyorum :)

kısacası deneme yanılma ile bir sonuç elde edilebilir. ben 2-3 saat uğraştığım cümleler biliyorum
 
hocam cinsiyeti 0 yerine null yaparsan

count(alan_adi) --- nulları saymaz
select count(*) from kimlik --- tüm kayıtlarının saysı için
select count(cinsiyet) from kimlik --- erkeklerin saysı

select count(*)-count(cinsiyet) from kimlik --- kız ların sayısı
 
biraz baktım ama sanki tablo yapısı sizin almak istediğiniz sonuç için uygun tasarlanmamış, tablo yapısı böyle olmak zorunda mı?
değişik yapılarda daha kolaylıkla sonuca ulaşabilirsiniz...
 
Sanki oldu gibi:
SELECT kimlik.dogum_yeri,- Sum(kimlik.cinsiyet=1) AS Erkek,- Sum(kimlik.cinsiyet=0) AS Kadın
FROM kimlik
GROUP BY kimlik.dogum_yeri
 
Hocalarım hepinize ve emeğinize teşekkür ederim.

mek63 hocam sorgu aceesste sorunsuz çalıştı
fakat sql server'da çalışmadı.
yine de teşekkürler
 
SQL SERVER'da çalışan sorguyu sonunda yazdım.
Herkese teşekkürler.

Kod:
SELECT [KIMLIK].[DOGUM_YERI], 
SUM(CASE [KIMLIK].[CINSIYETI]
         WHEN '1' THEN 1
         WHEN '0' THEN 0
         END ) AS ERKEK,
SUM(CASE [KIMLIK].[CINSIYETI]
         WHEN '0' THEN 1
         WHEN '1' THEN 0
         END ) AS KADIN
FROM [KIMLIK]
GROUP BY [KIMLIK].[DOGUM_YERI]
 
select Count(Dogum_yeri),K.Dogum_yeri,
(Select count(Cinsiyet) from kimlik where cinsiyet=0 and Dogum_Yeri=K.Dogum_Yeri) as KadinSayisi,
(Select count(Cinsiyet) from kimlik where cinsiyet=1 and Dogum_Yeri=K.Dogum_Yeri) as ErkekSayisi
from Kimlik K Group By Dogum_Yeri

Sanırım istediğiniz sorgu bu SQL server da direk çalıştırabilirsiniz(0 ve 1 siz kendiniz belirlersiniz cinsiyeti ben kendi varsayimim olarak yazdim)
 
BBNET
Geri
Üst