我正在整理一个简单的答案跟踪应用程序,输出条形图,显示有多少人回答了每个问题。
a_id q_id a_option_1 a_option_2 a_option_3 a_option_4
1 1 NULL NULL 1 NULL
2 1 NULL 1 NULL NULL
3 1 1 NULL NULL NULL
4 1 1 NULL NULL NULL
5 2 NULL 1 NULL NULL
6 2 1 NULL NULL NULL
7 2 1 NULL NULL NULL
8 2 1 NULL NULL NULL
对于每张图表,我正在做:
SELECT sum(a_option_1) as a_1, sum(a_option_2) as a_2, sum(a_option_3) as a_3, sum(a_option_4) as a_4, sum(a_option_1) + sum(a_option_2) + sum(a_option_3) + sum(a_option_4) as total FROM interactive_answers WHERE q_id = x
如果每个选项都有答案但
,则可以正常工作sum(a_option_1) + sum(a_option_2) + sum(a_option_3) + sum(a_option_4) as total
如果某些选项没有值,不会输出任何内容。
我需要做些什么才能解决这个问题?
答案 0 :(得分:1)
让我们回答一下。我会添加一些细节,使其不仅仅是重复。
选择:
SUM(COALESCE(a_option_1, 0))
或
COALESCE(SUM(a_option_1), 0)
我更喜欢第一种形式,主要是因为,这就是我的想法 - 我认为“尽可能接近零点”。我不确定它是否存在性能问题。
另外,IFNULL也会像COALESCE一样完成它。 IFNULL更快,但只有两个参数,因为它针对这个案例进行了优化。我认为我总是使用COALESCE,因为它适用于任意数量的参数,因此我更容易记住这一点。