数据开发岗笔试题>>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

解析

相关推荐
lkbhua莱克瓦2411 小时前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
heartbeat..12 小时前
零基础学 SQL:DQL/DML/DDL/DCL 核心知识点汇总(附带连接云服务器数据库教程)
java·服务器·数据库·sql
23zhgjx-zgx14 小时前
SQL注入攻击分析报告
网络·sql·ctf
heartbeat..14 小时前
SQL 常用函数大全:聚合、字符串、数值、日期、窗口函数解析
java·数据库·sql·函数
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ17 小时前
sql 如果字段为空就用另一个字段
数据库·sql
vortex518 小时前
【小技巧】用 VLOOKUP 实现表格合并
excel
浊酒南街18 小时前
SUBSTRING_INDEX 函数介绍
sql·spark
宫瑾18 小时前
Excel常用操作记录
excel
中环留念19 小时前
MySQL 索引全解析:索引类型、聚簇索引、回表与性能优化
sql·mysql·索引·图解
老蒋每日coding19 小时前
Java解析Excel并对特定内容做解析成功与否的颜色标记
java·开发语言·excel