Forum

Bildirimler
Hepsini Temizle

SQL Sorgusu

4 Yazılar
2 Üyeler
0 Likes
409 Görüntüleme
(@MehmetAliTALMAC)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Merhaba,

 DBAnswers tablosu anketimize verilen cevapları tutmaktadır, Bu tabloya göre aşağıdaki gördüğünüz DumpResults, DumpResults2 Sorgusunu yazabilir miyiz?

 Cevaplar 1-5 arasında verilmektedir ve hangi soruya hangi cevabın kaç adet verildiğini ve yüzdesini öğrenmek istiyoruz.

 Yardımcı olarabilecek arkadaşlara teşşekür ederim.

 

DumpAnswers
ID    KurumKodu    DonemID    SoruID    Cevap
1043    888888    2    313    1
1044    888888    2    292    2
1045    888888    2    293    2
1046    888888    2    294    5
1047    888888    2    295    4

DumpResults
KurumKodu    DonemID    SoruID    Cevap1Adet    Cevap2Adet    Cevap3Adet    Cevap4Adet    Cevap5Adet
888888    2    313    0    2    4    8    290
888888    2    292    5    4    3    9    195
888888    2    293    8    3    5    7    202
888888    2    294    1    19    4    3    211
888888    2    295    1    7    9    6    300

 

DumpResults2
KurumKodu    DonemID    SoruID    Cevap1Yuzde    Cevap2Yuzde   Cevap3Yuzde    Cevap4Yuzde    Cevap5Yuzde
888888    2    313    0    2    4    8    86
888888    2    292    5    4    3    9    79
888888    2    293    8    3    5    7    77
888888    2    294    1    19    4    3   73
888888    2    295    1    7    9    6    77

 
Gönderildi : 15/03/2010 20:02

(@orhanakdogan)
Gönderiler: 311
Reputable Member
 

1- Aşağıdaki viewleri oluşturalım.


CREATE VIEW [dbo].[sorular]
AS
SELECT     soruID, COUNT(soruID) AS soruadet
FROM         dbo.DumpAnswers
GROUP BY soruID


---------------------------------------------------------


CREATE VIEW [dbo].[cevap1adet]
AS
SELECT     soruID, COUNT(cevap) AS cevap1adet
FROM         dbo.DumpAnswers
WHERE     (cevap = 1)
GROUP BY soruID


---------------------------------------------------------


CREATE VIEW [dbo].[cevap2adet]
AS
SELECT     soruID, COUNT(cevap) AS cevap2adet
FROM         dbo.DumpAnswers
WHERE     (cevap = 2)
GROUP BY soruID



---------------------------------------------------------


CREATE VIEW [dbo].[cevap3adet]
AS
SELECT     soruID, COUNT(cevap) AS cevap3adet
FROM         dbo.DumpAnswers
WHERE     (cevap = 3)
GROUP BY soruID



---------------------------------------------------------


CREATE VIEW [dbo].[cevap4adet]
AS
SELECT     soruID, COUNT(cevap) AS cevap4adet
FROM         dbo.DumpAnswers
WHERE     (cevap = 4)
GROUP BY soruID



---------------------------------------------------------


CREATE VIEW [dbo].[cevap5adet]
AS
SELECT     soruID, COUNT(cevap) AS cevap5adet
FROM         dbo.DumpAnswers
WHERE     (cevap = 5)
GROUP BY soruID



---------------------------------------------------------


CREATE VIEW [dbo].[Result]
AS
SELECT     dbo.sorular.soruID AS SoruID, dbo.sorular.soruadet, ISNULL(dbo.cevap1adet.cevap1adet, 0) AS Cevap1_Adet, ROUND(CAST(ISNULL(dbo.cevap1adet.cevap1adet, 0)
                      AS float) / CAST(dbo.sorular.soruadet AS float) * 100, 2) AS Cevap1Yüzde, ISNULL(dbo.cevap2adet.cevap2adet, 0) AS Cevap2_Adet,
                      ROUND(CAST(ISNULL(dbo.cevap2adet.cevap2adet, 0) AS float) / CAST(dbo.sorular.soruadet AS float) * 100, 2) AS Cevap2Yüzde, ISNULL(dbo.cevap3adet.cevap3adet,
                      0) AS Cevap3_Adet, ROUND(CAST(ISNULL(dbo.cevap3adet.cevap3adet, 0) AS float) / CAST(dbo.sorular.soruadet AS float) * 100, 2) AS Cevap3Yüzde,
                      ISNULL(dbo.cevap4adet.cevap4adet, 0) AS Cevap4_Adet, ROUND(CAST(ISNULL(dbo.cevap4adet.cevap4adet, 0) AS float) / CAST(dbo.sorular.soruadet AS float) * 100, 2)
                      AS Cevap4Yüzde, ISNULL(dbo.cevap5adet.cevap5adet, 0) AS Cevap5_Adet, ROUND(CAST(ISNULL(dbo.cevap5adet.cevap5adet, 0) AS float)
                      / CAST(dbo.sorular.soruadet AS float) * 100, 2) AS Cevap5Yüzde
FROM         dbo.sorular LEFT OUTER JOIN
                      dbo.cevap1adet ON dbo.sorular.soruID = dbo.cevap1adet.soruID LEFT OUTER JOIN
                      dbo.cevap3adet ON dbo.sorular.soruID = dbo.cevap3adet.soruID LEFT OUTER JOIN
                      dbo.cevap2adet ON dbo.sorular.soruID = dbo.cevap2adet.soruID LEFT OUTER JOIN
                      dbo.cevap5adet ON dbo.sorular.soruID = dbo.cevap5adet.soruID LEFT OUTER JOIN
                      dbo.cevap4adet ON dbo.sorular.soruID = dbo.cevap4adet.soruID


 



2-


Select * from Result


 

 
Gönderildi : 16/03/2010 06:39

(@MehmetAliTALMAC)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Orhan bey çok teşekkür ederim ilginiz ve çözüm öneriniz için, bilgisayarıma format attığımdan ancak mesaj yazabildim.

 

 
Gönderildi : 17/03/2010 18:23

(@orhanakdogan)
Gönderiler: 311
Reputable Member
 

Rica ederim.

 
Gönderildi : 18/03/2010 01:26

Paylaş: