count(1)与count(*)的区别、ROUND函数

news2024/11/27 16:44:33

部分问题

  • 1. count(1)与count(*)的区别
  • 2. ROUND函数
  • 3. SQL19 分组过滤练习题
  • 4. Mysql bigdecimal 与 float的区别
  • 5. 隐式内连接与显示内连接 (INNER可省略)

1. count(1)与count(*)的区别

COUNT(*)和COUNT(1)有什么区别?

count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略为NULL的值。

count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略为NULL的值。

count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。

create table counttest(name char(1),age char(2)); 
insert into counttest values('a', '14'),('a', '15'),('a', '15'),
('b', NULL),('b', '16'),('c', '17'),('d', null),('e',''); 

SELECT 
	name,
	count( name ),
	count( 1 ),
	count(*),
	count( age ),
	count(DISTINCT ( age )) 
FROM
	counttest group BY name;

在这里插入图片描述

在这里插入图片描述

2. ROUND函数

MySQL中的ROUND函数是用于将一个数值四舍五入到指定的小数位数的函数。它的语法如下:

ROUND(x, d)

其中,x是要进行四舍五入的数值,d是要保留的小数位数。如果d是正数,则x将四舍五入到小数点后d位;如果d是负数,则x将四舍五入到整数部分的第d位。

以下是一些示例:

  1. ROUND(3.14159, 2) 返回 3.14。这里将3.14159四舍五入到小数点后2位。
  2. ROUND(12.345, 0) 返回 12。这里将12.345四舍五入到整数部分。
  3. ROUND(123.456, -1) 返回 120。这里将123.456四舍五入到整数部分的第一位。

需要注意的是,ROUND函数的舍入规则是标准的四舍五入。如果小数位的下一位是5,将进行向上舍入,否则向下舍入。

另外,还有一个可选的参数mode可以用来指定舍入模式,默认是使用0,表示四舍五入。如果mode是正数,表示向上舍入;如果是负数,表示向下舍入。

总而言之,MySQL中的ROUND函数提供了一种方便的方式来对数值进行四舍五入操作。

SELECT
	gender,
	university,
	COUNT(*) user_num,
	ROUND ( AVG( active_days_within_30 ), 1 ) avg_active_days,
	ROUND ( AVG( question_cnt ), 1 ) avg_quesition_cnt 
FROM
	user_profile 
GROUP BY
	gender,
	university

3. SQL19 分组过滤练习题

分组过滤练习题

在这里插入图片描述

SELECT
	university,
	avg( question_cnt ) avg_question_cnt,
	avg( answer_cnt ) avg_answer_cnt 
FROM
	user_profile 
GROUP BY
	university 
HAVING
	avg_question_cnt < 5 
	OR avg_answer_cnt < 20;
DROP TABLE IF EXISTS user_profile;
CREATE TABLE `user_profile` (
	`id` INT NOT NULL,
	`device_id` INT NOT NULL,
	`gender` VARCHAR ( 14 ) NOT NULL,
	`age` INT,
	`university` VARCHAR ( 32 ) NOT NULL,
	`gpa` FLOAT,
	`active_days_within_30` INT,
	`question_cnt` FLOAT,
	`answer_cnt` FLOAT 
);
INSERT INTO user_profile VALUES(1,2138,'male',21,'北京大学',3.4,7,2,12);
INSERT INTO user_profile VALUES(2,3214,'male',null,'复旦大学',4.0,15,5,25);
INSERT INTO user_profile VALUES(3,6543,'female',20,'北京大学',3.2,12,3,30);
INSERT INTO user_profile VALUES(4,2315,'female',23,'浙江大学',3.6,5,1,2);
INSERT INTO user_profile VALUES(5,5432,'male',25,'山东大学',3.8,20,15,70);
INSERT INTO user_profile VALUES(6,2131,'male',28,'山东大学',3.3,15,7,13);
INSERT INTO user_profile VALUES(7,4321,'male',28,'复旦大学',3.6,9,6,52);

复制
输出:
university|avg_question_cnt|avg_answer_cnt
北京大学    |2.500           |21.000
浙江大学    |1.000           |2.000

4. Mysql bigdecimal 与 float的区别

在MySQL中,BigDecimal和Float是用于存储和处理数值类型的数据的两种不同的数据类型,它们具有以下几个重要的区别:

  1. 精度:BigDecimal是一种高精度的数值类型,可以存储任意精度的数值,而Float是一种单精度浮点数类型,具有固定的位数限制。一般来说,BigDecimal可以存储更大范围的数值,并保留更高的精度。

  2. 四舍五入:由于浮点数在二进制表示中的限制,Float类型的数值在进行计算和存储时可能会产生舍入误差。这意味着在进行精确计算时,BigDecimal通常比Float更可靠,因为BigDecimal采用了基于十进制的表示方式,能够精确地进行四舍五入。

  3. 存储空间:Float类型的数据占用的存储空间通常比BigDecimal要小。对于大量的数值数据,使用Float类型可能会节省存储空间。

  4. 计算性能:由于BigDecimal是基于BigInteger的,在进行计算时可能会比Float类型更加耗费计算资源。Float类型可以使用硬件浮点数运算指令进行快速计算,而BigDecimal则需要进行更复杂的算法计算。

综上所述,当需要精确计算和高精度存储时,尤其是在金融领域或需要精确计算的场景中,推荐使用BigDecimal。而当对精度要求不高,且需要节省存储空间和提高计算性能时,可以考虑使用Float类型。

5. 隐式内连接与显示内连接 (INNER可省略)

在这里插入图片描述
在这里插入图片描述

-- 隐式内连接
SELECT
	q.device_id,
	q.question_id,
	q.result 
FROM
	question_practice_detail q,
	user_profile u 
WHERE
	q.device_id = u.device_id 
	AND u.university = '浙江大学';
	
-- 显示内连接 (INNER可省略)
SELECT
	q.device_id,
	q.question_id,
	q.result 
FROM
	question_practice_detail q
	INNER JOIN user_profile u
	ON q.device_id = u.device_id 
WHERE
	u.university = '浙江大学';

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

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

相关文章

【网络】路由配置实践1

网络实践-路由篇 本文使用vmware虚拟机进行路由表配置实践&#xff0c;通过配置路由表连接两个不同的网络&#xff0c;不涉及路由协议&#xff0c;全手动配置&#xff0c;旨在理解路由表的概念 网络规划&#xff1a; 准备三台centos7虚拟机&#xff0c;其中一台作为路由设备ro…

【个人博客系统网站】注册与登录 · 加盐加密验密算法 · 上传头像

【JavaEE】进阶 个人博客系统&#xff08;3&#xff09; 文章目录 【JavaEE】进阶 个人博客系统&#xff08;3&#xff09;1. 加盐加密验密算法原理1.1 md5加密1.2 md5验密1.3 md5缺漏1.4 加盐加密1.5 后端的盐值拼接约定1.6 代码实现1.6.1 加密1.6.2 验密1.6.3 测试 2. 博客…

探究IP路由的工作原理与路由表查找规则

文章目录 一、定义二、IP连通的前提三、路由表1. 作用2. 路由表字段内容3. 路由表查表规则4. 路由信息的来源5. 路由表写表规则6. 路由优先级 四、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 路由器是网络中负责将数据报文在不同IP网段…

css 左右宽固定,中间自适应——双飞翼布局

最近面试的时候遇到一个提问说&#xff0c;如何做到一个左右宽度固定&#xff0c;中间自适应的布局&#xff0c;我的答案不重要&#xff0c;重要的是不是面试官想听到的答案&#xff0c;这样问大概率他想听到的答案一定是双飞翼布局&#xff0c;所以今天就手敲一个双飞翼布局让…

设计模式-原则篇-01.开闭原则

简介 ​ 可以把设计模式理解为一套比较成熟并且成体系的建筑图纸&#xff0c;经过多次编码检验目前看来使用效果还不错的软件设计方案。适用的场景也比较广泛&#xff0c;在使用具体的设计模式之前先要学习软件设计的基础 “软件设计原则”&#xff0c;后面的23个设计模式都是…

Mybatis学习|多对一、一对多

有多个学生&#xff0c;没个学生都对应&#xff08;关联&#xff09;了一个老师&#xff0c;这叫&#xff08;多对一&#xff09; 对于每个老师而言&#xff0c;每个老师都有N个学生&#xff08;学生集合&#xff09;&#xff0c;这叫&#xff08;一对多&#xff09; 测试环境…

《TCP/IP网络编程》阅读笔记--Socket类型及协议设置

目录 1--协议的定义 2--Socket的创建 2-1--协议族&#xff08;Protocol Family&#xff09; 2-2--Socket类型&#xff08;Type&#xff09; 3--Linux下实现TCP Socket 3-1--服务器端 3-2--客户端 3-3--编译运行 4--Windows下实现 TCP Socket 4-1--TCP服务端 4-2--TC…

B. Consecutive Points Segment - 思维

分析&#xff1a; 思维还是不够发散&#xff0c;太容易一种方法走到死了&#xff0c;一直在模拟一直WA&#xff0c;看完题解发现一个数组的整段所有数组共同移动的距离最多只能是2&#xff0c;那么a[0]到a[n - 1]就是之间应该有多少个数&#xff0c;然后本来需要n个连续的数&am…

【vue2第十一章】v-model的原理详解 与 如何使用v-model对父子组件的value绑定 和修饰符.sync

v-model的原理详解 v-model的本质就是一个语法糖&#xff0c;实际上就是 :value"msg" 与 input"msg $event.target.value" 的简写。 :value"msg" 从数据单向绑定到input框&#xff0c;当data数据中的msg内容一旦改变&#xff0c;而input框数据…

yum 、rpm、yumdownloader、repotrack 学习笔记

1 Linux 包管理器概述 rpm的使用&#xff1a; rpm -ivh filename.rpm#这列出该packageName&#xff08;包名&#xff09;安装的所有文件列表。 rpm -ql packageName #查询已安装的该packageName的详细信息&#xff0c;包括版本、发布日期等。 rpm -qi packageName #列出该pac…

剑指 Offer 62. 圆圈中最后剩下的数字(简单)

题目&#xff1a; class Solution { public:int lastRemaining(int n, int m) {int pos 0;for(int i2;i<n;i){pos (posm)%i;}return pos;} };作者&#xff1a;想吃火锅的木易 链接&#xff1a;详细题解 来源&#xff1a;力扣&#xff08;LeetCode&#xff09;

哪些存储设备的数据需要注意,防止误删除或者格式化丢失?

以下是一些存储设备的数据要注意&#xff0c;防止误删除或者格式化丢失&#xff1a; 1.硬盘&#xff1a;存储重要数据时要备份&#xff0c;避免硬盘故障、误格式化等情况导致数据丢失。 2.USB闪存驱动器&#xff1a;在拔出USB闪存驱动器前&#xff0c;应该先进行“安全删除”…

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作

Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 目录 Stable Diffuse 之 本地环境部署 WebUI 进行汉化操作 一、简单介绍 二、汉化操作 附录&#xff1a; 一、Install from URL 中出现 Failed to connect to 127.0.0.1 port 7890: Connection refused 错误&#xf…

Nodejs 第十四章(process)

process 是Nodejs操作当前进程和控制当前进程的API&#xff0c;并且是挂载到globalThis下面的全局API API 介绍 1. process.arch 返回操作系统 CPU 架构 跟我们之前讲的os.arch 一样 arm、arm64、ia32、mips、mipsel、ppc、ppc64、s390、s390x、以及 x64 2. process.cwd() …

docker 笔记5:redis 集群分布式存储案例

尚硅谷Docker实战教程&#xff08;docker教程天花板&#xff09;_哔哩哔哩_bilibili 目录 1.cluster(集群)模式-docker版哈希槽分区进行亿级数据存储 1.1面试题 1.1.1 方案1 哈希取余分区 1.1.2 方案2 一致性哈希算法分区 原理 优点 一致性哈希算法的容错性 一致性…

恢复数据的利器:易我数据恢复终身技术版v16.2.0.0

EaseUS Data Recovery Wizard为全球提供数据恢复方案,用于误删数据数据,电脑误删文件恢复,格式化硬盘数据恢复,手机U盘数据恢复等,RAID磁盘阵列数据恢复,分区丢失及其它未知原因丢失的数据恢复,简单易用轻松的搞定数据恢复。 特点描述 - 易我数据恢复中文便携版&#xff0c;无…

一笑的大型连续剧之第一集

自我介绍 哈喽&#xff0c;大家好。首先在开篇之前我想先自己介绍一下&#xff0c;我叫一笑&#xff0c;大家也可以叫我小舒。是一名又菜又爱写代码的Java程序员。当然这个也是我目前的一个想法&#xff0c;可以后期也可能想着去写一下其他的语言。介绍完成之后也就是单纯的想…

VPG算法

VPG算法 前言 首先来看经典的策略梯度REINFORCE算法&#xff1a; 在REINFORCE中&#xff0c;每次采集一个episode的轨迹&#xff0c;计算每一步动作的回报 G t G_t Gt​&#xff0c;与动作概率对数相乘&#xff0c;作为误差反向传播&#xff0c;有以下几个特点&#xff1a; …

Linux命令200例:Dump用来做文件系统备份

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈优质新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

C. Queries for the Array - 思维

分析&#xff1a; 分析出现矛盾的地方&#xff0c;也就是可能遇到0&#xff0c;并且已有字符串的长度小于等于1&#xff0c;另一种情况就是&#xff0c;遇到了1并且已有字符串不是排好序的&#xff0c;或者遇到了0已有字符串是排好序的&#xff0c;那么可以遍历字符串&#xff…