我的查询有什么问题?

What is Wrong with my Query?

我正在为我所在的数据训练营开展一个项目,并且我正在与三个 table 一起工作。在这些 table 中,我试图找到更多关于该数据集中用户的信息。我想回答的一些问题是...

  1. 有多少用户在日常生活中使用不止一种浏览器?
  2. 除了firefox,最流行的浏览器是什么?
  3. 使用多种浏览器的用户最常用的浏览器是什么?

附件是我的table概述(忽略垃圾代码) 这是我遇到问题的查询:

select user_id, q2, q3, q4
from survey
where q2 = '0' or '1' and q3 = '0' or '1' or '2' or '3' and q4 = '0' or '1' or '2' or '3' or '4' or '5'

我想提取 q2、q3、q4 的命名值。我如何正确编写它以便将数据提取到一组中?我想将它拉到一组中,以便我可以导出和导入 excel 并旋转数据。

两个问题:

  1. 对运算符优先级的误解 - 如果您同时拥有 andor,请确保您使用 ()..
  2. 正确包装
  3. 编译错误 - 在每个 or 之间您必须再次指定比较。 q3 = '0' or '1' 不起作用 -> 更改为 q3 = '0' or q3 = '1'

所以:

select user_id, q2, q3, q4
from survey
where (q2 = '0' or q2 = '1')
and (q3 = '0' or q3 = '1' or q3 = '2' or q3 ='3')
and (q4 = '0' or q4 = '1' or q4 = '2' or q4 = '3' or q4 = '4' or q4 = '5')

现在,更好的方法是使用in

select user_id, q2, q3, q4
from survey
where q2 in ('0','1')
and q3 in ('0','1','2','3')
and q4 in ('0','1','2','3','4','5')

您的查询有问题的是您不能写 q2 = '1' or '2'。这是无效的语法。使用 in 代替:

where q2 in ('0','1') and q3 in ('0','1','2','3') and q4 in ('0','1','2','3','4','5')