首页 > 数据库 >HiveSQL

HiveSQL

时间:2024-05-13 12:08:52浏览次数:14  
标签:info COMMENT stu HiveSQL course score id

1. 表

sublime 格式化 ctrl+k ctrl+f

-- 创建学生表
DROP TABLE IF EXISTS student_info;
create table if not exists student_info(
    stu_id string COMMENT '学生id',
    stu_name string COMMENT '学生姓名',
    birthday string COMMENT '出生日期',
    sex string COMMENT '性别'
) 
row format delimited fields terminated by ',' 
stored as textfile;

-- 创建课程表
DROP TABLE IF EXISTS course_info;
create table if not exists course_info(
    course_id string COMMENT '课程id',
    course_name string COMMENT '课程名',
    tea_id string COMMENT '任课老师id'
) 
row format delimited fields terminated by ',' 
stored as textfile;

-- 创建老师表
DROP TABLE IF EXISTS teacher_info;
create table if not exists teacher_info(
    tea_id string COMMENT '老师id',
    tea_name string COMMENT '老师姓名'
) 
row format delimited fields terminated by ',' 
stored as textfile;

-- 创建分数表
DROP TABLE IF EXISTS score_info;
create table if not exists score_info(
    stu_id string COMMENT '学生id',
    course_id string COMMENT '课程id',
    score int COMMENT '成绩'
) 
row format delimited fields terminated by ',' 
stored as textfile;


1.1 简单汇总查询

--查询数学成绩不及格的学生信息和其对应的数学学科成绩,按照学号升序排序
SELECT s.stu_id,
       s.stu_name,
       t1.score
FROM student_info s
JOIN
  ( SELECT *
   FROM score_info
   WHERE course_id=
       (SELECT course_id
        FROM course_info
        WHERE course_name='数学')
     AND score < 60 ) t1 ON s.stu_id = t1.stu_id
ORDER BY s.stu_id;

1.2分组查询 对分组结果条件查询

--查询平均成绩大于60分的学生的学号和平均成绩
select
    stu_id,
    avg(score) score_avg
from score_info
group by stu_id
having score_avg > 60;

1.3 按指定条件分组

--查询一共参加三门课程且其中一门为语文课程的学生的id和姓名
select
  si.stu_id,
  si.stu_name
from student_info si
         join
     (
         select stu_id,
                count(*) cc
         from score_info
         where stu_id in (select stu_id
                          from score_info
                          where course_id = (select course_id from course_info where course_name = '语文'))
         group by stu_id
         having count(*) = 3
     ) t1
on
  si.stu_id=t1.stu_id
--没有学全所有课的学生的学号、姓名
SELECT sti.stu_id,
       sti.stu_name,
       count(sci.course_id)
FROM student_info sti
LEFT JOIN score_info sci ON sti.stu_id = sci.stu_id
GROUP BY sti.stu_id,sti.stu_name
HAVING count(sci.course_id) < (SELECT count(*) FROM course_info)

标签:info,COMMENT,stu,HiveSQL,course,score,id
From: https://www.cnblogs.com/xiao-hua-sheng/p/18188953

相关文章

  • Hive 刷题——HiveSql 实现分钟级的趋势图
    问题描述在Hive中,怎么用sql实现分钟级的趋势图?比如从交易表中,如何统计0点到每分钟的交易趋势图?原表:trade_A(trade_id,pay_time(格式是2020-08-0510:30:28),pay_gmv)。希望用sql实现分钟级的0点到当前分钟的GMV。结果表:result_A(minute_rn(分钟顺序),pay_gmv_td(每分钟的交易额,都是......
  • snappy压缩格式下使用数字与字符串不等于比较,hiveSQL和sparkSQL表现不一致的行为记录
    Hive版本:2.3.4Spark版本:2.4.0当时用Snappy格式对表进行压缩时,时用<>符号将字符串与数字进行比较会产生不一致的结果。SparkSQL结果并非预期结果。DROPTABLEIFEXISTStest.zero_test;CREATETABLEtest.zero_testTBLPROPERTIES("orc.compress"="SNAPPY")ASSELECT......
  • Trino(PrestoSQL)和HiveSQL的时间格式转换对比
    1.获取当前时间--hiveselectfrom_unixtime(unix_timestamp());-->2021-01-0622:53:16--精确到今天的时分秒selectfrom_unixtime(unix_timestamp('2021-12-0713:01:03'),'yyyy-MM-ddHH:mm:ss');-->2021-12-0713:01:03--精确到今天的时分秒指定格式selectcurrent......
  • hivesql报错:java.net.SocketTimeoutException: Read timed out
    场景:在dolphin里面执行hivesql脚本,报错java.net.SocketTimeoutException:Readtimedout解决方式:hive.metastore.client.socket.timeout=1000s 扩展:"Hive报Readtimedout"错误可能也与YARN的资源限制有关。可以通过增加YARN的配置参数来解决此错误。<property><name......
  • Hivesql字符截取函数错用
    1.背景       最近在使用instr进行字符截取时出现了字符截断的情况,案例是需要获取出"红河哈尼族矫族自治州(xxxx(红河)有限公司)"里面的"xxxx(红河)有限公司"内容,结果获取到的内容是"xxxx(红河",该语句针对只有一对括号时没有问题,当出现这种有两个括号时就会出现截断的问题,......
  • 尚硅谷大数据HiveSQL练习题(一)——同时在线人数问题
    题目需求现有各直播间的用户访问记录表(live_events)如下,表中每行数据表达的信息为,一个用户何时进入了一个直播间,又在何时离开了该直播间。user_id(用户id)live_id(直播间id)in_datetime(进入直播间的时间)out_datetime(离开直播间的时间)10012021-12-119:30:00......
  • HiveSQL在使用聚合类函数的时候性能分析和优化详解
    概述前文我们写过简单SQL的性能分析和解读,简单SQL被归类为select-from-where型SQL语句,其主要特点是只有map阶段的数据处理,相当于直接从hive中取数出来,不需要经过行变化。在非多个节点的操作上,其性能甚至不比Tez和Spark差。而这次我们主要说的是使用聚合类函数的hiveSQL,这类SQL需......
  • Hive执行计划之什么是hiveSQL向量化模式及优化详解
    Hive开启向量化模式也是hiveSQL优化方法中的一种,可以提升hive查询速率,也叫hive矢量化。问题1:那么什么是hive向量化模式呢?问题2:hive向量化什么情况下可以被使用,或者说它有哪些使用场景呢?问题3:如何查看hive向量化使用的相关信息?1.什么是hive向量化模式hive向量化模式是hive的一......
  • HiveSQL调优-最常用的调优方式
    系统和其它层面:让经常where的字段进行分区,合理的多分桶、数据使用压缩、建宽表的时候用列式的orc存储、开启严格模式:会产生笛卡尔积、orderby排序后未加limit、查询分区表时未指定列的HiveSQL语句直接执行出错开启列裁剪和分区裁剪:即只查询要读取的列和分区,避免全表扫描或全列......
  • hiveSQL mapreduce任务调优
    sethive.merge.mapredfiles=true;--在Map-Reduce的任务结束时合并小文件setmapred.max.split.size=30000000;--决定每个map处理的最大的文件大小,单位为B--setmapred.min.split.size=10000000;--公司集群默认值--setmapred.min.split.size.per.node=;......