首页 > 试题广场 >

在 Hive 中一个查询语句执行后显示的结果为: 20180

[单选题]
在 Hive 中一个查询语句执行后显示的结果为:
20180812  50;20180813  32;20180814 NULL,则最有可能的查询语句是()
  • SELECT inc_day,count(task_no) FROM 任务表 WHERE inc_day<=20180814
  • SELECT inc_day,count(task_no) FROM 任务表 WHERE inc_day<=20180814 GROUP BY inc_day
  • SELECT  inc_day,count(task_no) FROM 任务表 WHERE inc_day<=20180814 ORDER BY inc_day
  • SELECT inc_day,count(task_no) FROM 任务表 HAVING inc_day<=20180814 GROUP BY inc_day
select中出现item1、聚合函数处理的item2,就要group by item1.
发表于 2020-07-24 11:42:50 回复(0)
HAVING关键字和WHERE关键字的作用相同,都用于设置条件表达式对查询结果进行过滤,HAVING关键字后可以跟聚合函数,而WHERE关键字不能。聚合函数:COUNT(),SUM(),AVG(),MAX(),MIN()。
发表于 2019-03-17 18:36:26 回复(0)

having子句与where都是设定条件筛选的语句,有相似之处也有区别:

1.having是在分组后对数据进行过滤

   where是在分组前对数据进行过滤

2.having后面可以使用聚合函数

   where后面不可以使用聚合

3.在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。

    聚合语句(sum,min,max,avg,count)要比having子句优先执行,所以having后面可以使用聚合函数。而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count),所有where条件中不能使用聚合函数。

    select sum(num) as rmb from order where id>10;
    //先查询出id大于10的数据,再执行聚合语句sum(num)

    //执行以下语句会报错,因为where子句先于sum(num)执行,执行where子句的时候还没有sum(num),所以会报错。
    select sum(num) as rmb from order where sum(num)>10;

    对分组数据再次判断时要用having
    select reports,count(*) from employees group by reports having count(*) > 4;
    //首先查询了select reports,count() from employees group by reports,在此基础上查找count() > 4的数据。

    聚合函数:
    例如SUM, COUNT, MAX, AVG等,这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

    总结:HAVING子句可以让我们直接筛选成组后的各组数据,也可以在聚合后对组记录进行筛选,而WHERE子句在聚合前先筛选记录,也就是说作用在GROUP BY 子句和HAVING子句前。

发表于 2020-07-30 09:57:42 回复(2)
为什么会出现NULL值呢,就算字段值都为空那也得是0啊
发表于 2020-08-14 17:22:04 回复(4)
为啥我看的A B C这三个答案一模一样啊……
发表于 2021-12-06 22:24:28 回复(0)
D分组函数再次判断使用having

发表于 2021-09-04 10:20:32 回复(0)
排除法
发表于 2021-08-20 08:07:59 回复(0)

having子句与where都是设定条件筛选的语句,有相似之处也有区别:

1.having是在分组后对数据进行过滤

   where是在分组前对数据进行过滤

2.having后面可以使用聚合函数

   where后面不可以使用聚合

3.在查询过程中执行顺序:from>where>group(含聚合)>having>order>select。

    聚合语句(sum,min,max,avg,count)要比having子句优先执行,所以having后面可以使用聚合函数。而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count),所有where条件中不能使用聚合函数。

    select sum(num) as rmb from order where id>10;
    //先查询出id大于10的数据,再执行聚合语句sum(num)

    //执行以下语句会报错,因为where子句先于sum(num)执行,执行where子句的时候还没有sum(num),所以会报错。
    select sum(num) as rmb from order where sum(num)>10;

    对分组数据再次判断时要用having
    select reports,count(*) from employees group by reports having count(*) > 4;
    //首先查询了select reports,count() from employees group by reports,在此基础上查找count() > 4的数据。

    聚合函数:
    例如SUM, COUNT, MAX, AVG等,这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

    总结:HAVING子句可以让我们直接筛选成组后的各组数据,也可以在聚合后对组记录进行筛选,而WHERE子句在聚合前先筛选记录,也就是说作用在GROUP BY 子句和HAVING子句前。

发表于 2021-05-30 18:59:20 回复(0)
语法题 语法顺序或者聚合函数使用后结果不可能出现
发表于 2020-12-26 01:02:26 回复(0)
GROUP BY 可以检索到的元组按某一条件进行分类,具有相同条件的元组划到一个组或一个集合中,同时处理多个组或集合的聚集运算
发表于 2020-04-11 15:19:33 回复(0)