大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】

news2024/11/16 5:40:06
  1. 大数据面试SQL题复习思路一网打尽!(文档见评论区)_哔哩哔哩_bilibili
  2. Hive SQL 大厂必考常用窗口函数及相关面试题

  1. 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】
  2. 大数据面试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绝对重点

三、窗口函数用法举例

  1. 序号函数:row_number() / rank() / dense_rank()(面试重点)
  2. 分布函数:percent_rank() / cume_dist()
  3. 前后函数 lag(expr, n, defval)、lead(expr, n, defval)(面试重点)
  4. 头尾函数:FIRST_VALUE(expr)、LAST_VALUE(expr)
  5. 聚合函数+窗口函数联合使用

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 查询中,通常的语法顺序是这样的:

  1. SELECT:选择要查询的列。
  2. FROM:指定查询的数据表。
  3. WHERE:对数据进行筛选,根据指定的条件过滤行。
  4. GROUP BY:按照指定的列对结果进行分组。
  5. HAVING:对分组后的结果应用条件过滤。
  6. ORDER BY:指定结果的排序顺序。
  7. 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、表连接方式

  1. 内连接(Inner Join):返回匹配连接条件的行,包括两个表中同时出现的行。
  2. 左连接(Left Join 或 Left Outer Join):返回左表中的所有行,以及右表中与左表匹配的行。如果右表中没有匹配的行,则返回 NULL 值。
  3. 右连接(Right Join 或 Right Outer Join):返回右表中的所有行,以及左表中与右表匹配的行。如果左表中没有匹配的行,则返回 NULL 值。
  4. 全连接(Full Join 或 Full Outer Join):返回左表和右表中的所有行,如果某行在其中一个表中没有匹配的行,则返回 NULL 值。
  5. 自连接(Self Join):将表与自身连接,通常用于比较表中的不同行。

除了这些基本的连接方式外,还有一些其他变体和组合,但这些是最常见的表连接方式。

这些连接方式可以组合使用,因此可能会导致多个表同时参与连接。例如,在一个查询中,您可以使用多个内连接,左连接,右连接或全连接。

2.5、语法元素

2.5.1、union

UNION 是用于合并两个或多个 SELECT 语句的结果集的操作符。它用于将多个查询结果合并为单个结果集,并且会自动去除重复的行。UNION 用于组合两个或多个查询的结果集,并返回一个包含所有查询结果的单个结果集。

分别查看&结果不去重:所以直接使用两个条件的or是不行的,直接用union也不行,要用union all,分别去查满足条件1的和满足条件2的,然后合在一起不去重。

  1. UNIONUNION 操作符用于合并两个查询结果集,并且会自动去除重复的行。如果两个查询的结果集中存在相同的行,则 UNION 只会返回一次该行。UNION 不会返回重复的行。
  2. UNION ALLUNION ALL 也用于合并两个查询结果集,但是它不会去除重复的行。即使两个查询的结果集中存在相同的行,UNION ALL 也会将它们都返回。UNION ALL 返回所有行,包括重复的行。
select 
    device_id, gender, age, gpa
from user_profile
where university = '山东大学'

union all

select 
    device_id, gender, age, gpa
from user_profile
where gender = 'male';

2.5.2、case

CASE
    WHEN 简单表达式1 THEN 结果表达式1
    WHEN 简单表达式2 THEN 结果表达式2 …
    WHEN 简单表达式n THEN 结果表达式n
    [ ELSE 结果表达式n+1 ]
END
----------------------------------------------------
SELECT
    CASE
        WHEN GRADE BETWEEN 85 AND 100 THEN '优'
        WHEN GRADE BETWEEN 70 AND 84  THEN '良'
        WHEN GRADE BETWEEN 60 AND 69  THEN '及格'
        ELSE '不及格'
    END 等级,
    COUNT(*) 人数
FROM
    SC
GROUP BY
    CASE
        WHEN 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
---------------------------------
SELECT
    IF (age < 25 OR age IS NULL,
        '25岁以下',
        '25岁及以上'
    ) age_cut,
    COUNT(device_id) Number
FROM
    user_profile
GROUP BY
    age_cut;
---------------------------------
SELECT
    device_id,
    gender,
    IF (age is null, '其他',
        IF (age < 20, '20岁以下',
            IF (age <= 24, '20-24岁', '25岁及以上')
        )
    ) age_cut
FROM
    user_profile;

2.5.4、日期函数-DATEDIFF

MySQL 中的 DAY()MONTH()YEAR() 函数用于从给定的日期中提取日、月和年,返回类型:int。

select
    day (date) as day,
    count(question_id) as question_cnt
from
    question_practice_detail
where
    month (date) = 8
    and year (date) = 2021
group by
    date;

DATEDIFF() 是 MySQL 中的日期函数,用于计算两个日期之间的天数差异。它的语法如下:DATEDIFF(date1, date2)

其中,date1date2 是要比较的两个日期或日期/时间表达式。函数返回 date1 减去 date2 的结果,以天为单位的差值。

例如,假设有两个日期 date1date2,你可以使用 DATEDIFF() 函数来计算它们之间的天数差:

SELECT DATEDIFF('2024-04-26', '2024-04-20'); -- 返回 6

在这个例子中,结果是 6,因为从 2024-04-202024-04-26 之间相隔了 6 天。

ヾ(◍°∇°◍)ノ゙加油~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1928478.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程14-神经网络的优化与设计之拟合问题及优化与代码详解。在机器学习和深度学习领域&#xff0c;模型的训练目标是找到一组参数&#xff0c;使得模型能够从训练数据中学习到有用的模式&am…

mysql(5.5)启动服务和环境配置

正常启动 参考&#xff1a;Javaweb基础之mysql回溯笔记(一) 总的来说就是在mysql的安装目录下&#xff0c;找到bin下面的msyqld.exe&#xff0c;双击即启动了mysql服务&#xff1b; 启动方式二 也可以直接找到windows的服务项进行启动&#xff0c;操作如下&#xff1a; 打开…

eclipse免安装版64位 2018版本

前言 eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言&#xff0c;它只是一个框架和一组服务&#xff0c;用于通过插件组件构建开发环境。 一、下载地址 下载地址&#xff1a;http://source/download 选择如下图红色框文件内容下载 二、安装步骤 1、…

社交电商的新篇章:AI智能名片O2O商城小程序与传统微商的区别与融合

摘要 在数字经济蓬勃发展的今天&#xff0c;互联网技术的革新正以前所未有的速度重塑着商业格局。传统微商模式&#xff0c;尽管在初期借助社交媒体迅速崛起&#xff0c;但因其固有的局限性&#xff0c;如产品质量不一、营销手段单一、信任机制脆弱等&#xff0c;逐渐暴露出诸…

【实战场景】MongoDB迁移的那些事

【实战场景】MongoDB迁移的那些事 开篇词&#xff1a;干货篇【MongoDB迁移的方法】&#xff1a;1. 基于mongodump和mongorestore的迁移一、迁移前准备二、使用mongodump备份数据三、使用mongorestore还原数据四、注意事项 2. 基于MongoDB复制集的迁移一、迁移前准备二、配置新复…

Spring Boot整合Minio实现文件上传和读取

文章目录 一、简介1.分布式文件系统应用场景2.Minio介绍3.Minio优点 二、docker部署&#xff08;windows系统&#xff09;1.创建目录2.拉取镜像3.创建容器并运行4.访问控制台5.初始化配置 三、Spring Boot整合Minio1.创建demo项目2.引入依赖3.配置4.编写配置类5.MinIO工具类6.文…

ASP.NET Core----基础学习08----MVC中的属性路由

文章目录 1.MVC 中属性路由2.如果控制器名称与路由的第一级名称不一致3.指定读取的视图文件4.指定路由的一级 & 二级目录 1.MVC 中属性路由 step1&#xff1a; 在Startup.cs文件中设置仅使用UseMvc&#xff08;不包含路由的设置&#xff09; step2&#xff1a; 在控制器中…

实战案例:用百度千帆大模型API开发智能五子棋

前随着人工智能技术的迅猛发展&#xff0c;各种智能应用层出不穷。五子棋作为一款经典的棋类游戏&#xff0c;拥有广泛的爱好者。将人工智能技术与五子棋结合&#xff0c;不仅能提升游戏的趣味性和挑战性&#xff0c;还能展现AI在复杂决策问题上的强大能力。在本篇文章中&#…

如何使用 GPT?

​通过实例&#xff0c;来展示如何最好地使用 GPT。 生成文字 假设你在写一篇文章&#xff0c;需要在结尾加上这样一句&#xff1a;「California’s population is 53 times that of Alaska.」&#xff08;加州的人口是阿拉斯加州的 53 倍&#xff09;。 但现在你不知道这两个…

rancher单节点安装k8s

k3s 优点: 可用性 易于操作的轻量级部署模型 缺点: 与上游Kubernetes不同 RKE1 优点: 与上游Kubernetes紧密对齐 缺点: 严重依赖于 Docker RKE2 凭借 k3s 的优势和更紧密的上游协调&#xff0c;RKE2 将控制平面组件作为静态 pod 启动&#xff0c;由 kubelet 管理。 为了符合行业…

配置SMTP服务器的要点是什么?有哪些限制?

配置SMTP服务器安全性如何保障&#xff1f;如何高效配置服务器&#xff1f; SMTP作为电子邮件发送的核心协议&#xff0c;其配置对于确保邮件的成功传递和安全至关重要。AokSend将详细介绍配置SMTP服务器的关键要点&#xff0c;帮助读者建立一个高效、安全的邮件发送系统。 配…

LLM量化--AWQ论文阅读笔记

写在前面&#xff1a;近来大模型十分火爆&#xff0c;所以最近开启了一波对大模型推理优化论文的阅读&#xff0c;下面是自己的阅读笔记&#xff0c;里面对文章的理解并不全面&#xff0c;只将自己认为比较重要的部分摘了出来&#xff0c;详读的大家可以参看原文 原论文地址&am…

IIS只能访问根目录下的文件的解决方法

IIS只能访问根目录下的文件的解决方法 解决方法&#xff1a; 网站(右击) >> 高级设置 >>应用程序池 >> 选择&#xff08;DefaultAppPool&#xff09;

深入剖析 Android 开源库 EventBus 的源码详解

文章目录 前言一、EventBus 简介EventBus 三要素EventBus 线程模型 二、EventBus 使用1.添加依赖2.EventBus 基本使用2.1 定义事件类2.2 注册 EventBus2.3 EventBus 发起通知 三、EventBus 源码详解1.Subscribe 注解2.注册事件订阅方法2.1 EventBus 实例2.2 EventBus 注册2.2.1…

禹神:一小时快速上手Electron,前端Electron开发教程,笔记。一篇文章入门Electron

一、Electron是什么 简单的一句话&#xff0c;就是用htmlcssjsnodejs&#xff08;Native Api&#xff09;做兼容多个系统&#xff08;Windows、Linux、Mac&#xff09;的软件。 官网解释如下(有点像绕口令)&#xff1a; Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面…

Qt实现MDI应用程序

本文记录Qt实现MDI应用程序的相关操作实现 目录 1.MDM模式下窗口的显示两种模式 1.1TabbedView 页签化显示 1.2 SubWindowView 子窗体显示 堆叠cascadeSubWindows 平铺tileSubWindows 2.MDM模式实现记录 2.1. 窗体继承自QMainWindow 2.2.增加组件MdiArea 2.3.定义统一…

react自定义校验报错问题修复 ProFormText

1、以下是tsx组件 自定义校验告警导致表单无法提交问题修复 修改如下&#xff1a;

Mac Dock栏多屏幕漂移固定的方式

记录一下 我目前的版本是 14.5 多个屏幕&#xff0c;Dock栏切换的方式&#xff1a; 把鼠标移动到屏幕的中间的下方区域&#xff0c;触到边边之后&#xff0c;继续往下移&#xff0c;就能把Dock栏固定到当前屏幕了。

flutter 手写 TabBar

前言&#xff1a; 这几天在使用 flutter TabBar 的时候 我们的设计给我提了一个需求&#xff1a; 如下 Tabbar 第一个元素 左对齐&#xff0c;试了下TabBar 的配置&#xff0c;无法实现这个需求&#xff0c;他的 配置是针对所有元素的。而且 这个 TabBar 下面的 滑块在移动的时…

全开源TikTok跨境商城源码/TikTok内嵌商城/前端uniapp+后端+搭建教程

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…