当前位置: 首页 > news >正文

写SQL的心得

1、统计 COUNT(列名) 和COUNT(*)均可,区别是前者只会统计非NULL。

2、where后面不能跟聚合函数,用的话应该在Having使用,因此需要先分组GroupBy

where是基于行过滤,having是基于分组过滤

3、虽然执行顺序中having、group by在select后面,但是它们还是可以用select中定义的别名

执行顺序 :from > on > where > group by > having > select > distinct > order by > top

但是,MYSQL 中HAVING是可以使用SELECT中定义的别名。HAVING、GROUP BY都可以使用SELECT中定义的别名。

具体来说,在执行 SELECT 子句时,系统先计算 SELECT 中的列表达式和函数等,然后为这些列赋予一个列别名,并生成一个虚拟的查询结果表。接着,系统按照 GROUP BY 子句中的指定字段分组,并对每个分组进行计算,生成虚拟的分组结果表。最后,HAVING 子句基于这个虚拟的分组结果表进行筛选操作。

由于在执行 HAVING 子句时已经生成了虚拟的查询结果表和虚拟的分组结果表,已经存在列别名,但是没有值,因此 HAVING 子句可以直接引用 SELECT 列别名。

4、聚合函数本质:对指定的列进行聚合,如果我们用了group by,我们可以对每个分组应用内聚合函数。在分组内部,聚合函数会自动处理所有重复的行。举例子:

一个表中,记录了销售员ID、销售日期。需求是计算每个销售员的总销售额。

我们对ID进行分组,这样通过聚合函数SUM能将同一分组的销售额累加起来【即同一个销售员】

SELECT salesperson_id, SUM(sales_amount) AS total_sales
FROM sales_records
GROUP BY salesperson_id;

相关文章:

写SQL的心得

1、统计 COUNT(列名) 和COUNT(*)均可,区别是前者只会统计非NULL。 2、where后面不能跟聚合函数,用的话应该在Having使用,因此需要先分组GroupBy where是基于行过滤,having是基于分…...

经典权限五张表功能实现

文章目录 用户模块(未使用框架)查询功能实现步骤代码 新增功能实现步骤代码 修改功能实现步骤代码实现 删除功能实现步骤代码实现 用户模块会了,其他两个模块与其类似 用户模块(未使用框架) 查询功能 这里将模糊查询和分页查询写在一起 实现步骤 前端&#xff1…...

实验八 Linux虚拟内存 实验9.1:统计系统缺页次数成功案例

运行环境: VMware17.5.1 build-23298084Ubuntu 16.04LTS ubuntu版本下载地址Linux-4.16.10 linux历史版本下载地址虚拟机配置:硬盘一般不少于40G就行 内核版本不同内核文件代码也有出入,版本差异性令c文件要修改,如若要在linux6.7…...

SD-WAN提升Microsoft 365用户体验

随着数字化时代的到来,SaaS应用如Microsoft 365已经成为各类企业的主流选择。在这一趋势下,企业需要以更加灵活、高效的方式使用Microsoft 365,以满足日益增长的业务需求。而传统的网络基础设施可能无法满足这一需求,因此&#xf…...

C#中的异步编程模型

在C#中,async和await关键字是用于异步编程的重要部分,它们允许你以同步代码的方式编写异步代码,从而提高应用程序的响应性和吞吐量。这种异步编程模型在I/O密集型操作(如文件读写、网络请求等)中特别有用,因…...

博通Broadcom (VMware VCP)注册约考下载证书操作手册

博通Broadcom(VMware) CertMetrics 注册约考下载证书等操作指导手册(发布日期:2024-5-11) 目录 一、原 Mylearn 账号在新平台的激活… 1 二、在新平台查看并下载证书… 5 三、在新平台注册博通账号… 6 四、在新平台下注册考试… 10 一、原…...

Xilinx FPGA底层逻辑资源简介(1):关于LC,CLB,SLICE,LUT,FF的概念

LC:Logic Cell 逻辑单元 Logic Cell是Xilinx定义的一种标准,用于定义不同系列器件的大小。对于7系列芯片,通常在名字中就已经体现了LC的大小,在UG474中原话为: 对于7a75t芯片,LC的大小为75K,6输…...

SSH(安全外壳协议)简介

一、引言 SSH(Secure Shell)是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务。SSH最初由芬兰程序员Tatu Ylnen开发,用于替代不安全的telnet、rlogin和rsh等远程登录协议。通过SSH&#xff0…...

JavaScript异步编程——08-Promise的链式调用【万字长文,感谢支持】

前言 实际开发中,我们经常需要先后请求多个接口:发送第一次网络请求后,等待请求结果;有结果后,然后发送第二次网络请求,等待请求结果;有结果后,然后发送第三次网络请求。以此类推。…...

现代制造之数控机床篇

现代制造 有现代技术支撑的制造业,即无论是制造还是服务行业,添了现代两个字不过是因为有了现代科学技术的支撑,如发达的通信方式,不断发展的互联网,信息化程度加强了,因此可以为这两个行业增加了不少优势…...

Rust的协程机制:原理与简单示例

在现代编程中,协程(Coroutine)已经成为实现高效并发的重要工具。Rust,作为一种内存安全的系统编程语言,也采用了协程作为其并发模型的一部分。本文将深入探讨Rust协程机制的实现原理,并通过一个简单的示例来…...

学习成长分享-以近红外光谱分析学习为例

随着国家研究生招生规模的扩大,参与或接触光谱分析方向的研究生日益增多,甚至有部分本科生的毕业设计也包含以近红外光谱分析内容。基于对近红外光谱分析的兴趣,从2018年开始在CSDN博客(陆续更新自己学习的浅显认识,到…...

Linux makefile进度条

语法 在依赖方法前面加上就不会显示这一行的命令 注意 1.make 会在当前目录下找名为“makefile” 或者 “Makefile” 的文件 2.为了生成第一依赖文件,如果依赖文件列表有文件不存在,则会到下面的依赖关系中查找 3..PHONY修饰的依赖文件总是被执行的 …...

Ollama 可以设置的环境变量

Ollama 可以设置的环境变量 0. 引言1. Ollama 可以设置的环境变量 0. 引言 在Ollama的世界里,环境变量如同神秘的符文,它们是控制和定制这个强大工具的关键。通过精心设置这些环境变量,我们可以让Ollama更好地适应我们的需求,就像…...

基于Python+Django+MySQL实现Web版的增删改查

Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web。 开发环境 开发工具:Pycharm 2020.1开发语言:Python 3.8.0Web框架:Django 3.0.6数据库:…...

Map、Set和Object的区别

Set ES6提供了新的数据结构Set,类似于数组,但成员值是唯一的,没有重复的值 Set本身是一个构造函数(要 new),用来生成Set数据结构 Set 对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用 每个值在 Set 中…...

Web 安全之盗链(Hotlinking)攻击详解

目录 什么是盗链 盗链原理 盗链类型 盗链的危害 如何发现盗链 盗链防范措施 法律法规与应对策略 小结 盗链(Hotlinking)攻击,作为互联网安全领域的一个重要话题,涉及到侵犯版权、滥用资源和网络安全等多个层面。盗链现象普…...

leetcode算法笔记-算法复杂度

对于时间复杂度,主要包括三种情况: 渐进紧确界: O渐进上界: 渐进下界: 加法原则:不同的时间复杂度相加取阶数最高的 乘法原则:不同的时间复杂度相乘,结果为时间复杂度的乘积 阶乘…...

推荐算法详解

文章目录 推荐算法引言基于内容的推荐原理算法步骤注意点可以优化的地方示例代码讲解 协同过滤推荐原理算法步骤注意点可以优化的地方示例代码讲解 混合推荐系统原理算法步骤注意点可以优化的地方示例1代码讲解1示例2代码讲解2 基于知识的推荐原理算法步骤注意点可以优化的地方…...

Java找不到包解决方案

在跟着教程写Spingboot后端项目时,为了加快效率,有时候有的实体文件可以直接粘贴到目录中,此时运行项目会出现Java找不到包的情况,即无法找到导入的实体文件,这是项目没有更新的原因。解决方法: 刷新Maven:…...

终极指南:3步实现Switch手柄在Windows PC上的完美XInput兼容

终极指南:3步实现Switch手柄在Windows PC上的完美XInput兼容 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcod…...

在PC上体验PS4游戏:shadPS4模拟器入门与实战指南

在PC上体验PS4游戏:shadPS4模拟器入门与实战指南 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 还在为无法在PC上畅玩PS4独占游戏而烦恼吗?想象一下,那些只…...

从零到一:WPR机器人仿真平台实战指南,快速掌握ROS机器人开发精髓

从零到一:WPR机器人仿真平台实战指南,快速掌握ROS机器人开发精髓 【免费下载链接】wpr_simulation 项目地址: https://gitcode.com/gh_mirrors/wp/wpr_simulation 你是否对机器人开发充满热情,却被高昂的硬件成本和复杂的调试过程吓退…...

告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南

告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航…...

【AI】了解ChatMemory 底层实现机制

(说实在,看个 七、整体架构总结 就行了) 为何要了解底层原理,其意义在于出问题好排查,写代码时有思路。 基于源码调试与运行时验证,深度拆解ChatMemory 底层实现机制,重点解析 ChatMemoryStor…...

别再自己造轮子了!手把手教你用LwRB环形缓冲区搞定嵌入式数据流(附DMA零拷贝实战)

嵌入式数据流处理的终极方案:LwRB环形缓冲区深度解析与DMA实战 在嵌入式开发中,数据流处理如同空气般无处不在却又容易被忽视。从UART接收到的传感器数据,到SPI传输的图像信息,再到I2C收集的设备状态,这些数据流的处理…...

Zabbix监控华为防火墙丢包?可能是你的SNMP v2c配置没做对(附Python巡检脚本)

Zabbix监控华为防火墙丢包问题的深度排查与自动化解决方案 当Zabbix监控华为防火墙时出现丢包或数据异常,很多工程师的第一反应是检查网络连通性或Zabbix服务器配置,却忽略了防火墙自身SNMP v2c与安全策略的联动机制。本文将揭示这一常见误区的技术根源&…...

Linux GPIO框架深度解析:从用户空间到内核驱动的完整路径

1. 项目概述:为什么要在Linux下研究GPIO?搞嵌入式开发的朋友,对GPIO(通用输入输出)肯定不陌生。它就像芯片的“手脚”,负责最简单的电平控制和信号读取。在单片机时代,我们通常直接操作寄存器&a…...

Xilinx Zynq MPSoC开发实战:从Vivado到SDK的Hello World全流程解析

1. 项目概述与核心思路作为一名在嵌入式领域摸爬滚打了十多年的老工程师,每次拿到一块新的高性能开发板,那种想立刻点亮它、跑通第一个程序的冲动,就跟当年攒好第一台电脑按下开机键一样。这次拿到手的是基于Xilinx Zynq UltraScale MPSoC的米…...

哨兵1号数据处理必备:如何搞定精密轨道文件和SRTM DEM数据(最新可用链接)

哨兵1号数据处理实战:精密轨道与SRTM DEM数据获取全指南 对于从事InSAR或时序分析的遥感研究者而言,数据预处理阶段的轨道校正和地形相位去除是决定成果精度的关键步骤。本文将聚焦哨兵1号SAR数据处理中最核心的两类辅助数据——精密轨道文件和SRTM DEM&…...