MySQL数据库学习

1.group by分组问题

一般来说,group by的分组要配合上聚合函数,如count(),sum(),avg(),max(),min()

select city,count(city) as city_count from Country

group by city;

这样就建立一个新表,第一列是城市名,第二列是城市出现的次数

有时我们需要筛选,先筛选再分组使用where

select city,count(city) as city_count from Country

where area >=3000000

group by city;

这样先筛选面积大于3000000的城市,再统计出现次数。

有时我们需要后筛选,我们要列出城市出现次数大于5次的城市及次数,那么我们使用having

select city,count(city) as city_count from Country

where area >=3000000

group by city

having city_count >5;

2.连接问题join

连接的问题用left join比较多,用于两个表有相同的主键用on关键字按条件连接。值得注意的是,默认的连接方式是inner,有时我们需要outer外连接就用left outer join.

还有一类就是cross join和自己交叉连接,比如力扣197.上升的温度,让你列出当日温度比前一天温度高的条目。

select id from table as a

cross join table as b

on datediff(a.date,b.date)=1

where a.temperature>b.temperature;

这个语句将原表和新表分别命名为a和b,通过日期相差一天的条件进行连接,最后限制条件温度较前一天高。

值得注意的是,不用on连接而是用where and两个条件也是可以的,只是效率低了一点,毕竟连接的表要更大一些

相关推荐
雨辰AI40 分钟前
信创数仓分层建模|国产数据库 ODS/DWD/DWS 分层落地规范(金仓 / 达梦 / 高斯适配)
数据库·云原生·政务
Asum1ta1 小时前
K8s 学习环境搭建:Python 与 PyCharm 开发环境配置指南
python·学习·kubernetes
知识汲取者1 小时前
FastAPI 学习教程(写给想学 FastAPI 的 Java 工程师的)
python·学习·fastapi
风哥2号1 小时前
MySQL8.x/9.x数据库安装自动化全过程-Fgedu
数据库·mysql自动化安装
疯狂打码的少年1 小时前
【数据库技术】SQL数据查询(SELECT基本语法)
数据库·笔记·sql·oracle
程序员黎剑2 小时前
Redis缓存击穿:热点Key过期打崩数据库的3种解决方案
数据库·redis·缓存
一只小阿乐2 小时前
java 语法学习 1
java·开发语言·学习
dear_bi_MyOnly2 小时前
函数模块化:企业级项目高效之道
c++·后端·学习
QQ14220784492 小时前
知识库管理和工作学习系统--guada_ai
学习
Carl_.Net软开2 小时前
NSSM后台启动influx时序数据库
数据库·时序数据库