我想从用户满意度调查中得到一些平均得分,我在这里工作。有时候某个问题的评分为0,因为我们这样做的服务没有提供,所以他们无法回答。然而,我并没有真正考虑这种情况,只有一次航班只有一次调查,这意味着我最终可能得到0分。下面您看到数据库的图示:即使另一列为0,也需要包括计数
这是因为,如果调查有13个问题,我只得到结果返回他们的8,因为5有0收视率,然后我结束了一个问题在所有其他航班已经回答了至少一次的所有13个问题,最终数据的不匹配(!希望是有道理的)
所以我用来做这个:
SELECT AVG(CAST(RATING AS NUMERIC(18, 2))) AS AVERAGE,
QUESTIONID,
COUNT(QUESTIONID) AS COUNT
FROM AnswersRating
WHERE SURVEYID IN
(
SELECT ID
FROM SURVEYS
WHERE FLIGHTDATAID = 7311
) AND RATING > 0
GROUP BY QUESTIONID
ORDER BY QUESTIONID;
这是罚款,只要因为你没有1次调查 飞行。但事实证明,我们这样做:
AVERAGE QUESTIONID COUNT
3.000000 109 1
3.000000 110 1
3.000000 111 1
3.000000 112 1
3.000000 115 1
3.000000 117 1
3.000000 118 1
3.000000 120 1
3.000000 121 1
该航班没有对问题113,114,116和119,我知道这一点,因为我知道这个调查有13个问题的答案。但是一项调查未来可能会有很多问题。所以我想要有,而不是上述将是这样的:
AVERAGE QUESTIONID COUNT
3.000000 109 1
3.000000 110 1
3.000000 111 1
3.000000 112 1
0.000000 113 0
0.000000 114 0
3.000000 115 1
0.000000 116 0
3.000000 117 1
3.000000 118 1
0.000000 119 0
3.000000 120 1
3.000000 121 1
其中某些这些计数为0。鉴于我目前的查询,是否有可能这样做?如果是的话,如何?
想看看表定义,但一般来讲的情况下, - 这听起来像是你应该将你的问题表加入你的答案表中,然后总结答案 –
你需要一个表格,其中包含缺失问题的数据。 –
我收录了一张表格图。这有帮助吗? – OmniOwl