SQL,group by分组后分别计算组内不同值的数量
SQL,group by分组后分别计算组内不同值的数量

如现有一张购物表shopping

先要求小明和小红分别买了多少笔和多少橡皮,形成以下格式

SELECT 'name',COUNT(*)
FROM 'shopping'
GROUP BY 'name';SELECT name AS 姓名,SUM( CASE WHEN cargo = '笔' THEN 1 ELSE 0 END) AS 笔, SUM(CASE WHEN cargo = '橡皮' THEN 1 ELSE 0 END) AS 橡皮 FROM shopping GROUP BY name;
注:这里不能用count计算行数,count只是分组后每组有行的数目
MySQL中case when then else end 的用法
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
END;
SElECT
CASE ----------------------------如果
WHEN sex = '1' THEN '男' ----------------------------Sex=‘1’,则返回值‘男’
WHEN sex = '2' THEN '女' ----------------------------Sex=‘2’,则返回值‘女’
ELSE 0 ----------------------------其他的返回‘其他’
ND ----------------------------结束
from user ----------------------------整体理解:在user表中如果 sex=‘1’,则返回值‘男’;如果
sex=‘2’,则返回值‘女
----用法一:
SELECT
CASE
WHEN STATE = '1' THEN '成功'
WHEN STATE = '2' THEN '失败'
ELSE '其他'
END
FROM TABLE
---用法二:
SELECT STATE
CASE
WHEN '1' THEN '成功'
WHEN '2' THEN '失败'
ELSE '其他'
END
FROM table

案例:有员工表empinfo employee(员工)
CREATE TABLE 'EMPINFO' ('id' INT(11) NOT NULL AUTO_INCREMENT,'name' VARCHAR(10) NOT NULL,'age' INT(11) NOT NULL,'SALARY' INT(11) NOT NULL,PRIMARY KEY('id')
)
假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人:
salary>9999 and age>35
salary>9999 and age<35
salary<9999 and age>35
salary<9999 and age<35
每种员工的数量;
SELECT SUM(CASE WHEN salary>9999 AND age>35 THEN 1 ELSE 0 END) AS 'salary>9999 age>35',SUM(CASE WHEN salary>9999 AND age<35 THEN 1 ELSE 0 END) AS 'salary>9999 age<35',SUM(CASE WHEN salary<9999 AND age>35 THEN 1 ELSE 0 END) AS 'salary<9999 age>35',SUM(CASE WHEN salary<9999 AND age<35 THEN 1 ELSE 0 END) AS 'salary<9999 age<35'
FROM empinfo;

练习:用一个sql语句完成下面不同条件的分组
有如下数据:

按照国家和性别进行分组,得出如下结果:

SELECT country,
SUM ( CASE WHEN sex = '1' THEN
population ELSE 0 END),
SUM ( CASE WHEN sex = '2' THEN
popution ELSE 0 END)
FROM Table_A
GROUP BY country;
根据条件有选择的UPDATE。
例,有如下更新条件
工资5000以上的员工,工资减少10%
工资在2000到4600之间的员工,工资增加15%
很容易考虑的是选择执行两次UPDATE语句,如下所示
----条件一:
UPDATE Personnel
SET salary = salary * 0.9
WHERE salary >= 5000;
----条件二:
UPDATE Personnel
SET salary = salary*1.15
WHERE salary >= 2000 AND salary < 4600;
但是事情没有想象的那么简单,假设有个人工资5000块。首先,按照条件1,工资减少10%,变成工资4500.接下来运行第二个SQL的时候,因为这个人的工资是4500在2000到4600的范围之内,需要增加15%,最后这个人的工资结果是5175,不但没有减少,反而还增加了。如果反过来执行,那么工资4600的人相反会变成减少工资。暂且不管这个规章是多么荒诞,如果想要一个SQL语句实现这个功能的话,我们需要用到Case函数。代码如下:
UPDATE PersonnelSET salary = CASE WHEN salary >= 5000 THEN salary * 0.9WHEN salary >= 2000 AND salary < 4600 THEN salary * 1.15ELSE salary END;
这里要注意一点,最后一行的ELSE salary 是必须的,要是没有这行,不符合这两个条件的人的工资将会被写成NULL,那可就大事不妙了。在Case函数中Else部分的默认值是NULL,这点是需要注意的地方。

update T
set A = casewhen A > 100 then A = A-100when A < 100 then A = A+100else A end;

SELECT courseid, coursename,score,(CASE WHEN score < 60 THEN 'fail' ELSE 'pass' END) AS mark FROM course

SELECT DISTINCT 工单,制令号 FROM gomgdan

要求统计表gongdan中:工单·+制令号不重复的所有记录的数量
把中间查询到的结果当成一张表使用
SELECT COUNT(*) FROM (SELECT DISTINCT 工单,制令号 FROM gongdan) AS B

SELECT salary FROM employee GROUP BY salary DESC LIMIT 1, 1;
SELECT IFNULL
((SELECT salary FROM employee GROUP BY salary DESC LIMIT 1,1),NULL)
AS SecondHighestSalary;
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2
拷贝表(拷贝数据,源表名:a 目标表名:b)
SQL:insert into b(a,b,c) select d, e, f from a;
insert into b(a,b,c) select a,b,c from b;
相关文章:
SQL,group by分组后分别计算组内不同值的数量
SQL,group by分组后分别计算组内不同值的数量 如现有一张购物表shopping 先要求小明和小红分别买了多少笔和多少橡皮,形成以下格式 SELECT name,COUNT(*) FROM shopping GROUP BY name;SELECT name AS 姓名,SUM( CASE WHEN cargo 笔 THEN 1 ELSE 0 END)…...
关于python中常用命令(持续更新中)
目录 关于pip 卸载安装pip 更新pip 更换pip镜像源 清除缓存 更新指定包 指定清华镜像下载指定包 关于conda 更换清华镜像源 优先使用清华镜像 清除缓存 关于数据分析、数据挖掘常用 Matplotlib 3.6.0 文档(绘图实例) jupyter字体问题 jup…...
JAVA学习笔记21
1.IDEA的使用 1.ctrl B 快速定位到方法 2.ctrl Y 快速删除行 3.ctrl D 快速复制行 4.ctrl H 查看继承的层级关系 5.快速格式化代码 ctrl shift L 6.alt R 快速允许程序 7.ctrl / 快速添加注释 1.包(软件包) 1.1包的三大作用 1.区分相同名字的类 2.当类很多的…...
如何制作Word模板并用Java导出自定义的内容
1前言 在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。 2制作word模板 2.1 新建word文档 新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。…...
ubuntu 安装配置samba服务器完整教程
ubuntu 安装配置samba服务器完整教程 问题描述解决方法郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Intel arm64 OS:ubuntu16.04 问题描述 在安卓驱动系统开发的过程中,会需要搭建服务器,又需要搭建samba服务器,下面就…...
【APP_TYC】数据采集案例天眼APP查_查壳脱壳反编译_③
是不是生活太艰难 还是活色生香 我们都遍体鳞伤 也慢慢坏了心肠 你得到你想要的吗 换来的是铁石心肠 可曾还有什么人 再让你幻想 🎵 朴树《清白之年》 查壳 工具介绍Frida-dexDump Frida-dexDump简介 Frida-dexDump是基于Frida的一个工具&…...
通过MobaXterm工具可视化服务器桌面
一、MobaXterm工具 MobaXterm是一款功能强大的远程连接工具,可以连接到各种类型的服务器,包括Linux、Windows和MacOS。支持多种协议,包括SSH、RDP、VNC和Telnet MobaXterm可以通过X11转发功能可视化服务器桌面。 二、MobaXterm工具可视化服务…...
ctf题目
目录 1.文件包含的一道题目,没什么难度, 2.一道sql注入的题目,伪静态 3.限制只能本地访问。 1.文件包含的一道题目,没什么难度, 但是一个点就是它这里去包含的那个文件名就是flag,而不是flag.php也不是f…...
git 更改仓库地址
背景: 项目本来在A仓库进行保管,研发已经开发一段时间了,现在切换到了新的仓库B,研发本地如何将仓库切换到B 解决: # 查看远端地址 git remote -v # 查看远端仓库名 git remote # 重新设置远程仓库 git remote s…...
GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。
demo案例 GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。下面我将逐个讲解其入参、出参、属性、方法以及API使用方式。 入参(Input Parameters): GLTFExporter的主要入参是要导出的场景对象和一些导出选项。具体来说: s…...
消息队列经典应用场景
笔者心中,消息队列,缓存,分库分表是高并发解决方案三剑客。 在职业生涯中,笔者曾经使用过 ActiveMQ 、RabbitMQ 、Kafka 、RocketMQ 这些知名的消息队列 。 这篇文章,笔者结合自己的真实经历,和大家分享消息队列的七种经典应用场景。 1 异步&解耦 笔者曾经负责某电…...
阿里云Salesforce CRM功能差异列表 - Winter‘24
阉割版的阿里云Salesforce由于技术和监管等因素与国际版的Salesforce差距很大! 一、Winter‘ 24版差异概况: 1.1. 主要版本: 阿里云上的 Salesforce 提供两个版本,用于生产用途的 CN 版本(CN Edition)和用…...
WIN10系统下误删除了用户重启无法登录
WIN10系统下误删除了用户重启无法登录 不小心在控制面板的用户组里面删除了当前的用户,在电脑重启后无论怎么输入密码都提示不正确不能登录。 在选择登录的界面同时点击 shift 和重启按钮;在进入的界面选择“疑难问题”;选择进入安全模式&…...
国内ip怎么来回切换:操作指南与注意事项
在数字化时代,互联网已经成为我们日常生活、学习和工作中不可或缺的一部分。然而,随着网络应用的不断深化,用户对于网络环境的稳定性和安全性要求也越来越高。其中,IP地址作为网络中的关键标识,其切换与管理显得尤为重…...
day72Html
常用标签: 分类: 块级标签:独立成行 行级标签:不独立成行,同一行可放多个行级标 注意网页显示时,忽略空白字符,(回车符,空格,tab制表符) 一)块级标签…...
C语言内存函数(超详解)
乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 点击主页:optimistic_chen和专栏:c语言, 创作不易,大佬们点赞鼓…...
2024年天津体育学院退役大学生士兵专升本专业考试报名安排
天津体育学院2024年退役大学生士兵免试专升本招生专业考试报名安排 一、报名安排 1.报名对象:免于参加天津市文化考试的退役大学生士兵(已参加天津市统一报名且资格审核通过) 2.报名时间:2024年4月4日9:00-4月5日17…...
linux bypy 定时备份到百度网盘
安装 # 先卸载安装的python-pip sudo yum remove python-pip# 下载get-pip.py文件 wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python get-pip.py直接访问这个地址下载文件,再导入linux更快! https://bootstrap.pypa.io/pip/2.7/get-pip.py 连接 复制上面的连…...
星光/宝骏/缤果/长安 车机CarPlay手机操作破解教程V2.0版本(无需笔记本、无需笔记本、无需笔记本)
之前写了个1.0版本,由于太局限,需要用到笔记本才能操作,很多车友反馈不方便。特此出个手机版教程,简单easy,妈妈再也不用担心我搞不定啦 一、准备工作 先卸载车机上的autokit 或者 智能互联 app,这步很关…...
Spring Web MVC的入门学习(一)
目录 一、什么是 Spring Web MVC 1、MVC 定义 二、学习Spring MVC 1、项目准备 2、建立连接 2.1 RequestMapping 注解的学习 2.2 RequestMapping 使用 3、请求 3.1 传递单个参数 3.2 传递多个参数 3.3 传递对象 3.4 后端参数重命名(后端参数映射…...
translategemma-27b-it部署指南:Ollama模型缓存管理与多版本切换实践
translategemma-27b-it部署指南:Ollama模型缓存管理与多版本切换实践 你是不是也遇到过这样的烦恼:好不容易在Ollama上部署了一个大模型,用了一段时间想试试新版本,结果发现硬盘空间告急,或者不知道旧版本模型文件藏在…...
Ubuntu16.04服务器上从零部署LaneNet车道线检测:Tusimple数据集处理全流程避坑指南
Ubuntu 16.04服务器部署LaneNet车道线检测全流程实战 在自动驾驶和智能交通系统中,车道线检测是一项基础而关键的技术。本文将详细介绍如何在Ubuntu 16.04服务器环境下,从零开始部署LaneNet车道线检测模型,并处理Tusimple数据集的全流程。不同…...
零基础玩转OpenClaw:nanobot镜像可视化控制台入门
零基础玩转OpenClaw:nanobot镜像可视化控制台入门 1. 为什么选择nanobot镜像作为OpenClaw入门 第一次接触OpenClaw时,我被它强大的本地自动化能力所吸引,但很快就被复杂的命令行配置劝退了。直到发现了nanobot这个超轻量级OpenClaw镜像&…...
PHP 数组 vs SPL 数据结构:队列与栈场景下的性能对决
PHP 数组 vs SPL 数据结构:队列与栈场景下的性能对决在 PHP 开发中,我们常常面临一个经典的选择:是使用灵活的原生数组(Array)模拟队列/栈,还是使用标准库(SPL)提供的 SplQueue 和 S…...
COMSOL 探索岩石力学多场景:损伤、压裂、试验与模拟
COMSOL岩石损伤、水力压裂、三轴试验 岩石在膨胀剂的膨胀作用下的损伤; 相场法与水力压裂(6个模型); 不固结不排水三轴试验; 二维钻孔封孔效果模拟。在岩石力学领域,COMSOL 如同一个强大的实验室,让我们能够对复杂的岩…...
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例
Qwen3-ASR-0.6B惊艳效果:藏语、维吾尔语等少数民族语言识别案例 1. 引言:多语言语音识别的突破 语音识别技术正在改变我们与设备交互的方式,但有一个领域一直存在巨大挑战——少数民族语言的识别。传统的语音识别模型往往只支持主流语言&am…...
OpenClaw+GLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题
OpenClawGLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题 1. 为什么需要自动化学习助手? 去年备考研究生时,我每天要处理3-4小时的课程视频。最痛苦的不是听课本身,而是课后整理:手动截取关键片段、转录字幕、标…...
B端拓客号码核验:困局审视、技术革新与行业前行,氪迹科技法人股东号码核验系统,阶梯式价格
在B端拓客的全流程中,有效触达企业核心决策层是实现合作转化的关键,而法人、股东、董监高等群体的联系方式,則是搭建这一沟通链路的核心基础。号码核验作为拓客工作的前置核心环节,其筛选质量与效率,直接决定着拓客投入…...
教你 .NET Core API 怎么和数据库表一一对应
不用复杂理论,直接照做就能成功! 一、核心规则(记住这 4 句) 类 = 表 类名 = 表名 属性 = 字段 属性名 = 字段名 二、一步一步教你对应(超级简单) 1)数据库有一张表 → 你就写一个类 例如你数据库里有表: sql Users (Id int primary key identity,Name nvarchar(5…...
ECharts Geo Regions 进阶:自定义地图省份边界与区域样式的实战技巧
1. 理解ECharts中的geo.regions属性 ECharts作为一款强大的数据可视化工具,其地图组件在展示地理信息数据时尤为出色。在实际项目中,我们经常需要对特定省份或区域进行个性化样式设置,这时候geo.regions属性就派上用场了。这个属性允许我们对…...
