普通查询

1、

使用hive的hql查询用户所在部门

dpt表
dpt_id dpt_name
1 产品
2 技术user_dpt表
user_id dpt_id
1 1
2 1
3 2
4 2
5 31    1   产品
2   1   产品
3   2   技术
4   2   技术
5   3   其他部门
SELECT t1.user_id
,t1.dpt_id
,nvl(t2.dpt_name,"其它部门")
FROM dpt
LEFT JOIN user_dpt
ON dpt.dpt_id = user_dpt.user_id
;

2、

查出每个学期每门课程最高分记录

course_score表:
id,name,course,score,term
1,zhangsan,数学,80,2015
2,lisi,语文,90,2016
3,lisi,数学,70,2016
4,wangwu,化学,80,2017
5,zhangsan,语文,85,2015
6,zhangsan,化学,80,2015编写sql完成如下查询,一次查询实现好,也可以写多次查询实现:
1、查出每个学期每门课程高分记录(包含全部5个字段)
2、查出单个学期中语文课在90分以上的学生的数学成绩记录(包含全部5个字段)
--(1)
SELECT t.*
FROM course_score t,
(
SELECT course
,term
,MAX(score) score
FROM course_score
GROUP BY course
,term
) tmp
WHERE tmp.course = t.course
AND tmp.term = t.term
AND tmp.score = t.score
;
--(2)
SELECT t.*
FROM course_score t,
(
SELECT id
FROM course_score
WHERE course = "语文"
AND score > 90
) tmp
WHERE t.id = tmp.id
AND t.cource = "数学"
;

3、

设计数据库表,用来存放学生基本信息,课程信息,学生的课 程及成绩,并给出sql语句,查询平均成绩大于85的所有学生

stu_1
id,name,age,addr
1,zs1,22,bj
2,zs2,22,bj
3,zs3,22,bj
4,zs4,22,bj
5,zs5,22,bjcourse_1
cid,cname
1,语文
2,数学
3,政治
4,美术
5,历史course_sc
id,cid,score
1,1,87
1,2,92
1,3,69
2,2,83
2,3,92
2,4,87
2,5,83
SELECT *
FROM stu_1,
(
SELECT id
,AVG(score) a
FROM course_sc
GROUP BY id
HAVING AVG(score) > 85
) tmp
WHERE stu_1.id = tmp.id
;

4、

每个渠道的下单用户数、订单总金额

oid,uid,amount,channel,otime
1,100,19,a,2019-08-06 19:00:00
2,101,19,b,2019-08-06 19:00:01
3,100,19,a,2019-08-05 19:00:00
4,101,19,b,2019-08-05 19:00:01
5,102,19,a,2019-08-06 19:00:00
6,102,19,a,2019-08-06 19:00:01
SELECT channel
,COUNT(distinct user_id)
,SUM(amount)
FROM order
GROUP BY channel
ON dt = "2019-08-06"
;

5、

登录且阅读的用户数,已经阅读书籍数量及其它

表A(登录表):
ds user_id
2019-08-06 1
2019-08-06 2
2019-08-06 3
2019-08-06 4表B(阅读表):
ds user_id read_num
2019-08-06 1 2
2019-08-06 2 3
2019-08-06 3 6表C(付费表):
ds user_id price
2019-08-06 1 55.6
2019-08-06 2 55.8基于上述三张表,请使用hive的hql语句实现如下需求:
(1)、用户登录并且当天有个阅读的用户数,已经阅读书籍数量
(2)、用户登录并且阅读,但是没有付费的用户数
(3)、用户登录并且付费,付费用户书籍和金额
--(1)
SELECT COUNT(DISTINCT b.user_id)
,SUM(b.read_num)
FROM tableb b
LEFT JOIN tablea a
ON a.ds = b.ds AND a.user_id = b.user_id
GROUP BY ds
;
--(2)
SELECT c.ds
,COUNT(DISTINCT c.user_id)
FROM tablec c
LEFT JOIN tableb b
ON b.user_id = c.user_id AND b.ds = c.ds
LEFT JOIN tablea a
ON a.user_id = c.user_id AND a.ds = c.ds
WHERE c.user_id is null
GROUP BY c.ds
;
--(3)
SELECT c.user_id
,c.price
FROM tablec c join
ON tablea a
ON a.ds = c.ds AND a.user_id = c.user_id
;

6、

高消费者报表

district表:
disid   disname
1   华中
2   西南city表:
cityid  disid
1   1
2   1
3   2
4   2
5   2order表:
oid userid  cityid  amount
1   1   1   1223.9
2   1   1   9999.9
3   2   2   2322
4   2   2   8909
5   2   3   6789
6   2   3   798
7   3   4   56786
8   4   5   78890高消费者是消费金额大于1W的用户,使用hive hql生成如下报表:
区域名 高消费者人数  消费总额
SELECT b.disid
,c.disname
,a.userid
,SUM(a.amount)
FROM order_29 a
JOIN city b
ON a.cityid=b.cityid
JOIN district c
ON b.disid = c.disid
GROUP BY b.disid
,c.disname
,a.userid
;

7、

使用hive的hql实现买过商品3的用户及其昨日消费

数据
orderid userid  productid   price   timestamp   date
123,00101,3,200,1535945356,2019-08-28
124,00100,1,200,1535945356,2019-08-28
125,00101,3,200,1535945356,2019-08-29
126,00101,2,200,1535945356,2019-08-29
127,00102,5,200,1535945356,2019-08-29
128,00103,3,200,1535945356,2019-08-29
129,00103,3,200,1535945356,2019-08-29
SELECT
userid,
cur+lastday
from
(SELECT userid
,sum(case when dt=current_date then price else 0 end) cur,
sum(case when dt=date_sub(current_date,1) then price else 0 end) lastday
FROM
(
SELECT userid
,price
,dt
FROM buy
WHERE productid=3
AND (dt = current_date or dt = date_sub(current_date,1))
) tmp
group by userid) tt
where cur != 0 and lastday != 0
;

hive hql 普通查询 练习相关推荐

  1. 认识Hive,以及Hive的数据定义与数据操作,hive的数据查询和hive函数

    认识Hive 为什么要出现hive 前面知识我们讲到mapreudce计算框架,各位需要通过java编码的形式来实现设计运算过程,这对各位的编程能力提出了更高的要求,难道没有门槛更低的方式来实现运算的 ...

  2. hive的条件查询语句_[一起学Hive]之九-Hive的查询语句SELECT

    关键字:Hive SELECT.ORDER BY.SORT BY.DISTRIBUTE BY.CLUSTER BY.Hive子查询.Hive虚拟列 八.Hive的查询语句SELECT 在所有的数据库系 ...

  3. (2)hibernate HQL命名查询和Query接口的分页查询

    一  hql命名查询 hibernate中对动态查询参数绑定提供了丰富的支持,那么什么是查询参数动态绑定呢?其实如果我们熟悉传统JDBC编程的话,我们就不难理解查询参数动态绑定,如下代码传统JDBC的 ...

  4. 【Hive的高级查询详】

    hive的高级查询详解(group by. order by. join . distribute by.sort by. clusrer by. union all) - 程序员大本营

  5. hive 如何将数组转成字符串_hive 将hive表数据查询出来转为json对象和json数组输出...

    1.将hive表数据查询出来转为json对象输出apache 一.将查询出来的数据转为一行一行,并指定分割符的数据json 二.使用UDF函数,将每一行数据做为string传入UDF函数中转换为jso ...

  6. Hive表分区查询show partitions tablename

    Hive表分区查询show partitions tablename Spark Sql: %sql show partitions grainfo;

  7. Hive SQL数据查询基础

    教材第四章Hive SQL数据查询基础实验 提示:如果感觉sogou.500w.utf8文件太大,执行hive命令太耗时间,可以执行以下命令,截取前1万行数据,生成一个新的数据文件sogou.1w.u ...

  8. hive SQL 创建数据库,创建hive表、查询时,其表名,字段,统统不区分大写(在底层一律转换为小写)

    hive SQL 创建数据库,创建hive表.查询时,其表名,字段,统统不区分大写(在底层一律转换为小写) (1).默认default数据库 hive默认自带一个名为default的数据库,如果建表时 ...

  9. hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)

    Hive SQL 几乎是每一位互联网分析师的必备技能,相信每一位面试过大厂的童鞋都有被面试官问到 Hive 优化问题的经历.所以掌握扎实的 HQL 基础尤为重要,既能帮分析师在日常工作中"如 ...

最新文章

  1. 如何将git上的代码迁移到Coding上
  2. 未來用工新趨勢_数字化商业浪潮来袭 未来用工新趋势成焦点
  3. fresco xml配置属性不起作用
  4. 《高新技术企业知识产权管理》阅读笔记
  5. 使用spring boot创建fat jar APP
  6. MyEclipse中如何设置 jdk 和 jre 编译运行环境
  7. python中的string模块
  8. java 中的锁 aqs_Java并发编程系列-(4) 显式锁与AQS
  9. linux根文件分析,Linux根文件系统详解
  10. 开始学习:Ruby On Rails
  11. php遍历多个数据,php 数据遍历
  12. 复合型网络拓扑结构图_计算机网络拓扑结构图的种类及图示
  13. cox回归模型python实现_Cox回归分析及其SPSS操作方法概述
  14. 论文浏览(45) MiCT: Mixed 3D/2D Convolutional Tube for Human Action Recognition
  15. CyanogenMod编译
  16. mysql数据库设计教材_mySQL教程 第1章 数据库设计
  17. 2019级软件工程应用与实践-人工智能快递柜(代码分析11)
  18. 工控电脑服务器维修,2U机箱厂家分享:工控计算机电脑主板坏了如何维修?
  19. 【离散数学】代数系统,半群,独异点(幺半群),群,可交换群(Abel群)之间的关系
  20. Daily English-问爱好

热门文章

  1. java学习之fiel类
  2. 数研院联合CMC资本、凡卓集团主办小饭桌年度路演人工智能专场
  3. C++ STL之map基本知识(复习)
  4. 男人必吃的12种健康食物,程序员更得看看!
  5. HTML5唤起高德地图APP示例
  6. javascript 图像预装载-实现网页幻灯片放映
  7. 不止安企,芯片巨头同样紧盯机器识图技术
  8. 仿12306验证码 java_仿12306的图片验证码
  9. 高手的Blog 及ACM 好的网站
  10. 【算法练习】83.n 的第 k 个因子——枚举