代码之家  ›  专栏  ›  技术社区  ›  AnalyzeThis

我的查询有什么问题?

  •  0
  • AnalyzeThis  · 技术社区  · 10 年前

    我正在为我所在的数据训练营做一个项目,我正在使用三个表。在这些表中,我试图找到关于此数据集中用户的更多信息。我想回答的一些问题是。。。

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

    data set and tables 这是我遇到的问题:

    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中并透视数据。

    2 回复  |  直到 10 年前
        1
  •  4
  •   Gilad Green Fábio    10 年前

    两个问题:

    1. 对运算符优先级的误解-如果两者都有 and or 一定要用 () ..
    2. 编译错误-每个之间 必须再次指定比较。 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')
    

    现在,a 更好的方式 要做到这一点,需要使用 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')
    
        2
  •  3
  •   trincot    10 年前

    你的查询有问题的是你不能写 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')
    
    推荐文章