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

解析

相关推荐
网安Ruler15 分钟前
vulnhub-Hackme-隧道建立、SQL注入、详细解题、思路清晰。
数据库·sql·oracle
zhslhm36 分钟前
Excel表一键查询工具
excel·查询工具
是懒羊羊吖~3 小时前
【sql靶场】第15、16关-post提交盲注保姆级教程
数据库·笔记·sql·时间盲注·布尔盲注·sql靶场
初级代码游戏3 小时前
VSTO(C#)Excel开发9:处理格式和字体
c#·excel·vba·vsto
杜子腾dd5 小时前
16.使用读写包操作Excel文件:XlsxWriter 包
大数据·开发语言·python·excel·pandas
print('name')5 小时前
将景区天气数据存储到Excel文件中
开发语言·数据结构·python·pycharm·excel·visual studio code
追逐时光者7 小时前
工作面试必备:SQL 中的各种连接 JOIN 的区别总结
后端·sql
就改了8 小时前
MySQL进阶——DQL语句日常优化建议(详细版!)
数据库·sql·mysql
獨枭10 小时前
在 macOS 上优化 Vim 用于开发
macos·vim·excel