SQL 与 Hive 技术总结

本文介绍了多个SQL查询案例,包括使用窗口函数分析用户连续登录天数,查询各科成绩第二名的学生,以及实现Rank()函数等。涉及的数据表有用户登录记录、学生成绩和考试科目成绩,通过复杂条件查询和排序展示了SQL在数据分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0、一个不错的数据分析博主(里面都是数据分析面试题)

  数据分析星球的博客_优快云博客-笔记,机器学习领域博主数据分析星球擅长笔记,机器学习,等方面的知识https://blog.youkuaiyun.com/licent2011?type=blog

1、

Hive 安装_w3cschool所有Hadoop的子项目,如Hive, Pig,和HBase,都需要Linux的操作系统。因此,需要安装Linux OS。以下是为Hive的安装执行的简单步骤:第1步:验证JAVA安装在Hive安装之前,Java必须在系统上已经安装。使用下面的命令来验证是否已经安装Java:$ java –_来自Hive 教程,w3cschool编程狮。https://www.w3cschool.cn/hive_manual/hive_install.html

2、

HIVE:窗口函数,用sql语句查询MySQL安装路径和版本_Jack_2085-优快云博客SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for test_table-- ----------------------------DROP TABLE IF EXISTS `test_table`;CREATE TABLE `test_table` ( `id` bigint(6) NULL DEFAULT NULL, `prov...https://blog.youkuaiyun.com/weixin_54217632/article/details/120243482

3、

    3.1、根据条件查询连续登录N天的用户。

    3.2、查询连续登录天数最大的用户及天数。

表结构及数据:
DROP TABLE IF EXISTS `test5`;
CREATE TABLE `test5`  (
  `dt` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `user_id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of test5
-- ----------------------------
INSERT INTO `test5` VALUES ('2021-03-11', 'test_1', 23);
INSERT INTO `test5` VALUES ('2021-03-11', 'test_1', 23);
INSERT INTO `test5` VALUES ('2021-03-11', 'test_1', 23);
INSERT INTO `test5` VALUES ('2021-03-13', 'test_1', 23);
INSERT INTO `test5` VALUES ('2021-03-11', 'test_2', 19);
INSERT INTO `test5` VALUES ('2021-04-11', 'test_3', 39);
INSERT INTO `test5` VALUES ('2021-03-11', 'test_3', 39);
INSERT INTO `test5` VALUES ('2021-03-12', 'test_2', 19);
INSERT INTO `test5` VALUES ('2021-03-15', 'test_2', 19);
INSERT INTO `test5` VALUES ('2021-03-16', 'test_2', 19);
INSERT INTO `test5` VALUES ('2021-03-13', 'test_2', 19);
INSERT INTO `test5` VALUES ('2021-03-14', 'test_2', 19);

SET FOREIGN_KEY_CHECKS = 1;



------------------------------------------------ 下面是sql的实现语句



--  方法1 用case when then 方法


select distinct user_id 
from(
SELECT * ,
               CASE
               WHEN DATE_SUB(str_to_date(dt,'%Y-%m-%d'),INTERVAL 1 DAY) = str_to_date(@old,'%Y-%m-%d')  and @u_id=user_id and @old:=dt 
					THEN @size:=@size+1
					
               WHEN @old:=dt 
					THEN @size:=1 
               END
 AS tt, @u_id:=user_id
FROM (select * from test5 
group BY user_id,dt) t
ORDER BY user_id,dt) tb
where tb.tt = 2


-----------------------------------------------------------------



-- 求连续最多登录的天数

select MAX(tt) 
from(
SELECT * ,
               CASE
               WHEN DATE_SUB(str_to_date(dt,'%Y-%m-%d'),INTERVAL 1 DAY) = str_to_date(@old,'%Y-%m-%d')  and @u_id=user_id and @old:=dt 
					THEN @size:=@size+1
					
               WHEN @old:=dt 
					THEN @size:=1 
               END
 AS tt, @u_id:=user_id
FROM (select * from test5 
group BY user_id,dt) t
ORDER BY user_id,dt) tb


------------------------------------------------------------------

-- 查询连续登录系统天数,最多的人和一共连续登录了多少天。

select user_id, tt
from(
SELECT * ,
               CASE
               WHEN DATE_SUB(str_to_date(dt,'%Y-%m-%d'),INTERVAL 1 DAY) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值