数据开发岗笔试题>>sql(hive) ,excel [2025]

sql

复制代码
SELECT user_id, AVG(loan_amount) AS avg_loan_amount
FROM loan
GROUP BY user_id
HAVING AVG(loan_amount) > 20000;

授信表:credit

字段包含user_id(用户id),credit_id(授信id),credit_time(授信时间yyyy-MM-dd HH:mm:ss),credit_status(授信状态)。
支用表:loan

字段包含user_id(用户id),loan_id(订单id),credit_id(授信id),loan_time(支用时间yyyy-MM-dd HH:mm:ss),loan_amount(支用金额)。

1)查询累积授信总次数、当日授信总次数、当日授信总人数、当日授信但未支用人数。

还款计划表:repay_plan;

字段包含loan_order_id(订单号), duration_num(期数), plan_begin_time(计划还款开始时间), plan_end_time(计划还款结束时间), principal(应还金额)。
还款流水表:repay_detail;

字段包含loan_order_id(订单号), real_repay_time(实际还款时间), repay_amount(实际还款金额)。

1).查询每个订单按时还款、1-15日内还款、15日+还款的还款金额;

2).查询每个订单近3日还款金额、当月还款金额、近3个月还款金额;

1).查询每个订单按时还款、1-15日内还款、15日+还款的还款金额;

复制代码
SELECT 
    rp.loan_order_id AS order_id,
    SUM(CASE 
            WHEN rd.real_repay_time BETWEEN rp.plan_begin_time AND rp.plan_end_time 
            THEN rd.repay_amount ELSE 0 
        END) AS on_time_repay_amount, -- 按时还款金额
    SUM(CASE 
            WHEN rd.real_repay_time > rp.plan_end_time 
            AND DATEDIFF(rd.real_repay_time, rp.plan_end_time) BETWEEN 1 AND 15 
            THEN rd.repay_amount ELSE 0 
        END) AS within_15_days_repay_amount, -- 1-15日内还款金额
    SUM(CASE 
            WHEN rd.real_repay_time > rp.plan_end_time 
            AND DATEDIFF(rd.real_repay_time, rp.plan_end_time) > 15 
            THEN rd.repay_amount ELSE 0 
        END) AS over_15_days_repay_amount -- 15日+还款金额
FROM 
    repay_plan rp
LEFT JOIN 
    repay_detail rd 
ON 
    rp.loan_order_id = rd.loan_order_id
GROUP BY 
    rp.loan_order_id;

2).查询每个订单近3日还款金额、当月还款金额、近3个月还款金额;

复制代码
SELECT 
    rd.loan_order_id AS order_id,
    SUM(CASE 
            WHEN rd.real_repay_time >= DATE_SUB(CURRENT_DATE(), 2) 
            THEN rd.repay_amount ELSE 0 
        END) AS last_3_days_repay_amount, -- 近3日还款金额
    SUM(CASE 
            WHEN DATE_FORMAT(rd.real_repay_time, 'yyyy-MM') 
                 = DATE_FORMAT(CURRENT_DATE(), 'yyyy-MM') 
            THEN rd.repay_amount ELSE 0 
        END) AS current_month_repay_amount, -- 当月还款金额
    SUM(CASE 
            WHEN rd.real_repay_time >= DATE_SUB(CURRENT_DATE(), 90) 
            THEN rd.repay_amount ELSE 0 
        END) AS last_3_months_repay_amount -- 近3个月还款金额
FROM 
    repay_detail rd
GROUP BY 
    rd.loan_order_id;

请用一段sql代码取出每位学生最后一场语文考试的成绩和最后一场数学考试的成绩(假设同一科目同天考试次数<=1次)

表名:student_score 每一行数据代表某位学生在某一天某门学科的考试成绩

字段:name(姓名),subject(科目),score(分数),date(考试日期,yyyy-mm-dd)

复制代码
WITH last_exam AS (
    SELECT 
        name,
        subject,
        score,
        date,
        ROW_NUMBER() OVER (PARTITION BY name, subject ORDER BY date DESC) AS rn
    FROM 
        student_score
    WHERE 
        subject IN ('语文', '数学')
)
SELECT 
    name,
    MAX(CASE WHEN subject = '语文' AND rn = 1 THEN score END) AS last_chinese_score,
    MAX(CASE WHEN subject = '数学' AND rn = 1 THEN score END) AS last_math_score
FROM 
    last_exam
GROUP BY 
    name;

解析: hql有partition by 的作用

PARTITION BY name, subject 的 SQL 查询结果

没有**PARTITION BY 的 SQL 查询结果**

excel

题目1

计算总分

  • 在"总分"列的第一个单元格中输入公式:

    =C2+D2+E2

    这里假设C2、D2、E2分别是语文、数学、英语的成绩。

  • 按回车键,Excel会自动计算出总分。

  • 将这个单元格的公式向下拖动,应用到其他学生的总分计算中

题目2

假设数据源如下:

姓名 科目 成绩
Sam 语文 85
Sam 数学 90
Sam 英语 88
Jack 语文 78
Jack 数学 82
Jack 英语 80
Rose 语文 92
Rose 数学 95
Rose 英语 90
Courtney 语文 88
Courtney 数学 85
Courtney 英语 87

题目3

假设数据源如下:

A1:E5 区域

最后填充结果

题目4

解析:

创建透视表

设置透视表字段

设置小数位数

任意一个单元格>>右键>>数字格式>>数值的小数位数

题目5

解析

相关推荐
DONG91321 小时前
关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
数据库·sql·mysql·database
秋难降1 天前
零基础学习SQL(五)——函数详解
python·sql·mysql
瓶子xf1 天前
使用Excel制作甘特图
excel·甘特图
战族狼魂1 天前
Excel 连接阿里云 RDS MySQL
mysql·阿里云·云计算·excel
小悟空1 天前
【AI生成+补充】高频 hql的面试问题 以及 具体sql
sql·面试·职场和发展
cypking1 天前
vue excel转json功能 xlsx
vue.js·json·excel
专注VB编程开发20年1 天前
C#教程之NPOI读写excel文件XLS,XLSX格式
数据库·microsoft·c#·excel·xlsx·xls
firshman_start1 天前
SQL注入学习笔记
sql·学习
YC运维1 天前
WEB虚拟主机3种部署方式全解析
excel
四七伵1 天前
MyBatis #{} 与 ${} 有什么区别?为什么预编译能防止SQL注入?
前端·sql·mybatis