网站首页 > 知识剖析 正文
Linux运维面试中常考的笔试题,整理一下给大家分享一波,下面来看看面试题吧。
1.如何找出某个员工在过去一年中的平均月薪?(表格结构:员工ID,薪水,日期)
【答案】使用 GROUP BY 子句和 AVG 函数来统计每个员工的平均月薪。
SELECT 员工ID, AVG(薪水) AS 平均月薪
FROM 表名
WHERE 日期 >= DATEADD(year, -1, GETDATE())
GROUP BY 员工ID;
2.【题目】如何查询出行中多个字段相同时的数据?(表格结构:字段A,字段B,字段C)
【答案】使用 GROUP BY 子句和 HAVING 子句来查找字段 A、B、C 都相同的数据。
SELECT 字段A, 字段B, 字段C, COUNT(*) AS 计数
FROM 表名
GROUP BY 字段A, 字段B, 字段C
HAVING COUNT(*) > 1;
3.【题目】如何查询出一张表中最近一年中每个类别销售量排名前 5 的商品?(表格结构:商品ID,销售量,日期,类别)
【答案】使用子查询和 RANK() 函数来计算每个类别中每个商品的销售量排名,然后再使用 WHERE 子句筛选出最近一年的数据,最后使用 TOP 子句选择前 5 名。
SELECT *
FROM (
SELECT 商品ID, 类别, 销售量, RANK() OVER (PARTITION BY 类别 ORDER BY 销售量 DESC) AS 排名
FROM 表名
WHERE 日期 >= DATEADD(year, -1, GETDATE())
) 子查询
WHERE 排名 <= 5;
4.【题目】如何查询出一张表中连续N个月销售额增长的产品?(表格结构:商品ID,销售额,日期)
【答案】使用 DATEADD 和 DATEDIFF 函数来计算连续 N 个月,并使用子查询和 LEAD 函数来计算每个产品在相邻两个月中的销售额差值。
WITH CTE AS (
SELECT 商品ID, 销售额, 日期,
DATEDIFF(month, MIN(日期) OVER(PARTITION BY 商品ID), 日期) + 1 AS 月份
FROM 表名
)
SELECT *
FROM (
SELECT 商品ID, 月份, SUM(销售额) OVER(PARTITION BY 商品ID, 分组 ORDER BY 月份 ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS 上个月销售额, 销售额,
LEAD(销售额, 1) OVER(PARTITION BY 商品ID, 分组 ORDER BY 月份) - 销售额 AS 差值
FROM (
SELECT *, 月份 - ROW_NUMBER() OVER(PARTITION BY 商品ID ORDER BY 月份) AS 分组
FROM CTE
WHERE 月份 >= N
) t
) t2
WHERE 差值 > 0;
5.【题目】如何查询出一张表中的各个时间段内的销售总额和占比?(表格结构:销售ID,销售金额,日期)
【答案】使用 DATEPART 和 DATENAME 函数来计算各个时间段,使用 GROUP BY 子句和 SUM 函数来统计销售总额,并使用 SUM 函数的 OVER 子句来计算占比。
SELECT DATEPART(季度, 日期) AS 季度, SUM(销售金额) AS 销售总额,
CAST(SUM(销售金额) AS FLOAT) / CAST(SUM(SUM(销售金额)) OVER() AS FLOAT) AS 占比
FROM 表名
GROUP BY DATEPART(季度, 日期);
6.【题目】如何查询出一张表中每个类别的前 3 名销售员和其销售金额?(表格结构:销售员,类别,销售金额)
【答案】使用 ROW_NUMBER() 函数和 PARTITION BY 子句来对每个类别下的销售员进行排序,并使用 WHERE 子句和 TOP 子句来选择前 3 名。
SELECT 销售员, 类别, 销售金额
FROM (
SELECT 销售员, 类别, 销售金额, ROW_NUMBER() OVER(PARTITION BY 类别 ORDER BY 销售金额 DESC) AS 排名
FROM 表名
) t
WHERE 排名 <= 3;
7.【题目】如何查询出某个表中最近的 N 条数据?(表格结构:ID,日期,内容)
【答案】使用 TOP 子句和 ORDER BY 子句来选择最近的 N 条数据。
SELECT TOP N ID, 日期, 内容
FROM 表名
ORDER BY 日期 DESC;
8.【题目】如何查询出某个时间段内新增的用户数量和总用户数量?(表格结构:用户ID,注册日期)
【答案】使用 DATEADD 和 DATEDIFF 函数来计算时间段,使用 COUNT 函数来统计新增用户数量,并使用 SUM 函数和 OVER 子句来计算总用户数量。
SELECT COUNT(*) AS 新增用户数, SUM(COUNT(*)) OVER(ORDER BY 注册日期) AS 总用户数
FROM 表名
WHERE 注册日期 >= 开始日期 AND 注册日期 <= 结束日期
GROUP BY DATEADD(day, DATEDIFF(day, 0, 注册日期), 0);
9.【题目】如何查询出某个时间段线上和线下销售额的占比?(表格结构:销售ID,销售金额,销售方式,日期)
【答案】使用 CASE WHEN 子句和 SUM 函数来统计线上和线下销售额,并使用 SUM 函数的 OVER 子句来计算总销售额,然后通过除法计算占比。
SELECT 销售方式, SUM(CASE WHEN 销售方式 = '线上' THEN 销售金额 ELSE 0 END) AS 线上销售额,
SUM(CASE WHEN 销售方式 = '线下' THEN 销售金额 ELSE 0 END) AS 线下销售额,
CAST(SUM(CASE WHEN 销售方式 = '线上' THEN 销售金额 ELSE 0 END) AS FLOAT) / CAST(SUM(销售金额) OVER() AS FLOAT) AS 线上占比,
CAST(SUM(CASE WHEN 销售方式 = '线下' THEN 销售金额 ELSE 0 END) AS FLOAT) / CAST(SUM(销售金额) OVER() AS FLOAT) AS 线下占比
FROM 表名
WHERE 日期 >= 开始日期 AND 日期 <= 结束日期
GROUP BY 销售方式;
猜你喜欢
- 2024-11-12 PowerBI时间日期函数 powerbi日期相减
- 2024-11-12 数据库日期与时间函数概览 数据库时间日期型
- 2024-11-12 画像笔记7- 非实时标签-统计标签-最近来访标签
- 2024-11-12 扎心了!面试时遇到要手写sql,结果函数拼写不出来
- 2024-11-12 还不用Excel算算离国庆还有多少天?Get这11个神技每天省2小时!
- 2024-11-12 种猪生产数据预处理方法之数据清洗
- 2024-11-12 Mysql数据库常见函数(下)——日期时间函数
- 2024-11-12 MySQL常用函数之日期函数 mysql日期yyyymmdd
- 2024-11-12 MySQL常用函数,程序员真得看看 mysql常见函数
- 2024-11-12 日期数据如何比较? 日期比较js
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)