做海报的网站小白qq,网站托管服务,做网站分几步,青岛科技街网站建设大数据面试SQL题复习思路一网打尽#xff01;(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【...】 目录
01、力扣网-sql题
1、高频SQL50题#xff08… 大数据面试SQL题复习思路一网打尽(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【...】 目录
01、力扣网-sql题
1、高频SQL50题基础版
2、高频SQL50题进阶版
02、牛客网-sql题
2.1、运算符
2.2、条件查询
2.3、语法顺序
2.4、表连接方式
2.5、语法元素
2.5.1、union
2.5.2、case
2.5.3、if / is null
2.5.4、日期函数-DATEDIF HSQL绝对重点 三、窗口函数用法举例 序号函数row_number() / rank() / dense_rank()面试重点分布函数percent_rank() / cume_dist()前后函数 lag(expr, n, defval)、lead(expr, n, defval)面试重点头尾函数FIRST_VALUE(expr)、LAST_VALUE(expr)聚合函数窗口函数联合使用 01、力扣网-sql题 力扣sql题 1、高频SQL50题基础版 没写完 ... 2、高频SQL50题进阶版 没写完 ... 02、牛客网-sql题 非技术快速入门 2.1、运算符 2.2、条件查询 _匹配任意一个字符
SELECT * FROM 学生表 WHERE name LIKE 张__//查询姓“张”且名字是3个字的学生姓名。%匹配0个或多个字符
SELECT * FROM 学生表 WHERE 姓名 LIKE ‘张%’//查询学生表中姓‘张’的学生的详细信息。[ ]匹配[ ]中的任意一个字符(若要比较的字符是连续的则可以用连字符“-”表 达 )
SELECT * FROM 学生表 WHERE 姓名 LIKE [张李刘]%’//查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。[^ ]不匹配[ ]中的任意一个字符。
SELECT * FROM 学生表 WHERE 学号 LIKE %[^235] //从学生表表中查询学号的最后一位不是2、3、5的学生信息。
2.3、语法顺序 SELECT columns
FROM table_name
WHERE conditions
GROUP BY columns
HAVING conditions
ORDER BY columns DESC
LIMIT num;
-------------------------------
SELECT * | 字段列表 [as 别名]
FROM 表名
[WHERE 子句]
[GROUP BY 子句]
[HAVING 子句]
[ORDER BY 子句]
[LIMIT 子句]; 在 SQL 查询中通常的语法顺序是这样的 SELECT选择要查询的列。FROM指定查询的数据表。WHERE对数据进行筛选根据指定的条件过滤行。GROUP BY按照指定的列对结果进行分组。HAVING对分组后的结果应用条件过滤。ORDER BY指定结果的排序顺序。LIMIT限制返回的行数。 虽然在实际的 SQL 查询中您不一定需要每个子句都使用但是一般来说这是它们的一般顺序。 至于 AND它是用于连接多个条件的逻辑运算符。它通常出现在 WHERE 子句中用于结合多个条件以过滤行。 SELECT * FROM table_name WHERE condition1 AND condition2; 在这种情况下AND 的使用是在 WHERE 子句中但它可以根据需要出现在其他地方。 牛客网——SQL19 分组过滤练习题 select university, avg(question_cnt) as avg_question_cnt, avg(answer_cnt) as avg_answer_cnt from user_profile group by university having #聚合函数结果作为筛选条件时不能用where而是用having语法 avg_question_cnt 5 or avg_answer_cnt 20; 3.3.3 总结内连接查询步骤 1) 确定查询哪些表 2) 确定表连接的条件 3) 确定查询的条件 4) 确定查询的字段 2.4、表连接方式 内连接Inner Join返回匹配连接条件的行包括两个表中同时出现的行。左连接Left Join 或 Left Outer Join返回左表中的所有行以及右表中与左表匹配的行。如果右表中没有匹配的行则返回 NULL 值。右连接Right Join 或 Right Outer Join返回右表中的所有行以及左表中与右表匹配的行。如果左表中没有匹配的行则返回 NULL 值。全连接Full Join 或 Full Outer Join返回左表和右表中的所有行如果某行在其中一个表中没有匹配的行则返回 NULL 值。自连接Self Join将表与自身连接通常用于比较表中的不同行。 除了这些基本的连接方式外还有一些其他变体和组合但这些是最常见的表连接方式。 这些连接方式可以组合使用因此可能会导致多个表同时参与连接。例如在一个查询中您可以使用多个内连接左连接右连接或全连接。 2.5、语法元素
2.5.1、union UNION 是用于合并两个或多个 SELECT 语句的结果集的操作符。它用于将多个查询结果合并为单个结果集并且会自动去除重复的行。UNION 用于组合两个或多个查询的结果集并返回一个包含所有查询结果的单个结果集。 分别查看结果不去重所以直接使用两个条件的or是不行的直接用union也不行要用union all分别去查满足条件1的和满足条件2的然后合在一起不去重。 UNIONUNION 操作符用于合并两个查询结果集并且会自动去除重复的行。如果两个查询的结果集中存在相同的行则 UNION 只会返回一次该行。UNION 不会返回重复的行。UNION ALLUNION ALL 也用于合并两个查询结果集但是它不会去除重复的行。即使两个查询的结果集中存在相同的行UNION ALL 也会将它们都返回。UNION ALL 返回所有行包括重复的行。 select device_id, gender, age, gpa
from user_profile
where university 山东大学union allselect device_id, gender, age, gpa
from user_profile
where gender male;
2.5.2、case
CASEWHEN 简单表达式1 THEN 结果表达式1WHEN 简单表达式2 THEN 结果表达式2 …WHEN 简单表达式n THEN 结果表达式n[ ELSE 结果表达式n1 ]
END
----------------------------------------------------
SELECTCASEWHEN GRADE BETWEEN 85 AND 100 THEN 优WHEN GRADE BETWEEN 70 AND 84 THEN 良WHEN GRADE BETWEEN 60 AND 69 THEN 及格ELSE 不及格END 等级,COUNT(*) 人数
FROMSC
GROUP BYCASEWHEN GRADE BETWEEN 85 AND 100 THEN 优WHEN GRADE BETWEEN 70 AND 84 THEN 良WHEN GRADE BETWEEN 60 AND 69 THEN 及格ELSE 不及格END
2.5.3、if / is null
#if判断
SELECT IF(age 25 OR age IS NULL, 25岁以下, 25岁及以上) age_cut, COUNT(device_id) Number
FROM user_profile
GROUP BY age_cut
---------------------------------
SELECTIF (age 25 OR age IS NULL,25岁以下,25岁及以上) age_cut,COUNT(device_id) Number
FROMuser_profile
GROUP BYage_cut;
---------------------------------
SELECTdevice_id,gender,IF (age is null, 其他,IF (age 20, 20岁以下,IF (age 24, 20-24岁, 25岁及以上))) age_cut
FROMuser_profile;
2.5.4、日期函数-DATEDIFF MySQL 中的 DAY()、MONTH() 和 YEAR() 函数用于从给定的日期中提取日、月和年返回类型int。 selectday (date) as day,count(question_id) as question_cnt
fromquestion_practice_detail
wheremonth (date) 8and year (date) 2021
group bydate; DATEDIFF() 是 MySQL 中的日期函数用于计算两个日期之间的天数差异。它的语法如下DATEDIFF(date1, date2) 其中date1 和 date2 是要比较的两个日期或日期/时间表达式。函数返回 date1 减去 date2 的结果以天为单位的差值。 例如假设有两个日期 date1 和 date2你可以使用 DATEDIFF() 函数来计算它们之间的天数差 SELECT DATEDIFF(2024-04-26, 2024-04-20); -- 返回 6 在这个例子中结果是 6因为从 2024-04-20 到 2024-04-26 之间相隔了 6 天。 ヾ(◍°∇°◍)加油~