Forum
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
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
Orhan bey çok teşekkür ederim ilginiz ve çözüm öneriniz için, bilgisayarıma format attığımdan ancak mesaj yazabildim.
Rica ederim.