SQL(leetcode小白刷题)自用

在这里插入图片描述@Leetcode简单题自用整理[TOC]

1. 查找重复数据

题目描述

编写一个SQL查询,查找所有重复的XXXXX ,也可以是重复N次的,只需改变计数条件即可。

【解题思路】

思路1

  1. 看到“找重复”的关键字眼,
    首先要使用分组函数(group by)
    再用聚合函数中的计数函数count() 给查找的列计数。
  2. 分类汇总后,生成一个辅助表,可以从该子表中筛选查找列出计数大于1的元素,即重复的需要查找的内容。
  3. 使用辅助表结合where进行条件筛选进行嵌套子查询。

思路2
使用group by 直接在后面使用having 进行计算,筛选符合条件的。
前面提到聚合函数(count),where字句无法与聚合函数一起使用。因为where子句的运行顺序排在第二,运行到where时,表还没有被分组。

如果要对分组查询的结果进行筛选,可以使用having子句。

作者:houziAI
链接:https://leetcode-cn.com/problems/duplicate-emails/solution/tu-jie-sqlmian-shi-ti-ru-he-cha-zhao-zhong-fu-shu-/
来源:力扣(LeetCode)

注意事项 :
1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。where > group by > having > order by
2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

作者:he-qing-ping
链接:https://leetcode-cn.com/problems/duplicate-emails/solution/cha-zhao-zhong-fu-de-dian-zi-you-xiang-by-he-qing-/
来源:力扣(LeetCode)

2. 查询不在表中的数据

需要考虑join两个表
select …
from 表1 as a
left join 表2 as b
on a.列名=b.列名
where b.列名 is null;

3. 分组比较

  1. 先连接多表,在使用子表进行查询,注意保持查询的条件顺序与辅助子表一致。
  2. 每当出现“每”就是要用分组汇总了,所以是子句(group by 分组列)
  3. 查询最好,最优等,使用max(), 同理,最差,最小用min()

延伸——TOPN 问题

==思路1 ==

== 思路2 ==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值