【发布时间】:2015-05-19 14:53:12
【问题描述】:
我有一个包含调查结果的表格:
submitter issue q1 q2 q3 q4 q5
mike 11557 4 3 4 5 1
mark 13554 5 5 5 5 5
luke 15110 1 1 1 1 1
luke 15110 1 1 1 1 1
donald 16900 4 2 2 4 5
joe 11562 5 5 5 5 5
joe 11562 5 5 5 5 5
sam 12485 2 3 4 3 4
sam 12485 2 3 4 3 4
sam 12485 2 3 4 3 4
我希望能够过滤掉多个提交并仅计算其中的 1 个。 有些人提交了 3 或 4 次。
我知道如何知道调查提交了多少次以及由谁提交:
SELECT
submitter
,issue
,COUNT(*) as '# of times Survey submitted'
FROM
Survey
GROUP BY
submitter, issue
HAVING
COUNT(*) > 1
但是,我不确定如何使用此查询来过滤掉多个提交。
我正在处理的当前查询是:
SELECT 'Question #1' as 'Survey Question'
,CAST(CAST(SUM(q1) AS float)/COUNT(q1) AS decimal (4,2)) as 'Average Score'
FROM Survey
WHERE COALESCE(q1,q2,q3,q4,q5) IS NOT NULL
UNION ALL
SELECT 'Question #2' as 'Survey Question'
,CAST(CAST(SUM(q2) AS float)/COUNT(q2) AS decimal (4,2)) as 'Average Score'
FROM Survey
WHERE COALESCE(q1,q2,q3,q4,q5) IS NOT NULL
UNION ALL
etc...
期望的结果是:(注意:这个结果集不准确。只是我想要的格式。)
Survey Question Average Score
Question #1 4.58
Question #2 4.80
Question #3 4.60
Question #4 4.59
Question #5 4.64
谁能提供线索?
非常感谢!
【问题讨论】:
-
你用的是什么关系型数据库?
-
您如何决定您将计算多份提交中的哪一项?请同时显示您的预期结果
-
提交的内容都是一样的(来自任何特定用户),所以没关系。
标签: sql sql-server-2012 survey