group by(mysql oracle的区别) 的基本用法
group by做为分组来使用,后面为条件,可以有多个条件,条件相同的为一组,配合聚合函数进行相关统计。在不同数据库中用法稍有不同,这里只测试mysql和oracle。
1.准备好一张数据表:
mysql oracle
2.首先以name为分组条件:
1 SELECT * FROM person 2 GROUP BY `name`;
在mysql中执行结果如下:
分析:
在mysql中没有强调select指定的字段必须属于group by后的条件。若符合条件的字段有多个,则只显示第一次出现的字段。比如:以name为dd分组,id为1,2,3,4,5,但只显示1.同理,age也只显示1.
然后,虽然这种查询在语法上通过了,但结果并没有什么意义,因为其他字段并非需要的准确值。这在oracle中就行不通了。
在oracle中执行结果如下:
分析:
oracle指出,select查询字段未包含在group by 的条件中。推测,首先通过select * from person可以看到oracle中id并不是升序,或者说没有默认升序。也就是查询的结果是不确定的,hash?这可能涉及到在磁盘的存储等等,这里不去深究。因此,并不能确认第一次查出来的字段的值,而且分组后不是条件的值被合并后没有意义。
结论:
group by语句中select指定的字段必须是“分组依据字段”。
因此,只能这样查询:
SELECT name FROM person GROUP BY name;
结果一致:。
3.以name,age为查询依据,多条件分组
1 SELECT name,age FROM person 2 GROUP BY name,age;
结果:
mysql oracle
显然,两组的查询策略是不同的。但最终结果是相同的。都是以条件组合的笛卡尔积。也就是每个条件都一一对应。
分组依据为多条件组合成一个条件,当组合条件相同时为一组。因此,dd:1和dd:2分为两组。
4.添加聚合函数
聚合函数有如下几种:
函数 | 作用 | 支持性 |
---|---|---|
sum(列名) | 求和 | |
max(列名) | 最大值 | |
min(列名) | 最小值 | |
avg(列名) | 平均值 | |
first(列名) | 第一条记录 | 仅Access支持 |
last(列名) | 最后一条记录 | 仅Access支持 |
count(列名) | 统计记录数 | 注意和count(*)的区别 |
首先,要明白聚合函数的用法。比如,count(列字段值),统计该字段值出现的次数:
1 SELECT name,COUNT(*) 2 from person 3 GROUP BY name;
结果为:。
分析:
首先进行分组工作,group by name,这时8条数据被分成两组:dd和mm;然后count的作用就是统计每组里面的个数,分别是5和3.
更直观的例子:
SELECT * FROM person;
1 SELECT count(name) from person;
,count(name)为统计所有的name数量,同样的结果为count(1),count(*).
5.where 和 having
- where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
- having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。
group by(mysql oracle的区别) 的基本用法相关推荐
- sql server,mysql,oracle的区别
Oracle Oracle 能在所有主流平台上运行(包括Windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选择最适合的解决方案.对开发商全力支持,Oracle并行服务器通过使一组结 ...
- mysql oracle sql区别吗_mysql数据库的SQL语句和oracle的有什么区别?详细点
匿名用户 1级 2017-08-20 回答 区别如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Or ...
- mysql Oracle 的区别 你不能不知道的事
Oracle与MySQL的SQL语句区别 2 表 2.1 创建表(同) create table tableName( columnName1 int, columnName2 int ) 2.2 删 ...
- oracle sql now函数,SQL Server,MySQL,Oracle,PostgreSQL中常用函数用法(1)日
练习使用Hibernate没有用MySQL数据库,而是用了前不久接触的PostgreSQL,由于不同的数据对于相同的操作有各自的函数,MySQL的date_format(),在PostgreSQL中是 ...
- oracle类型sql转为mysql_Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)...
>本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚 ...
- MySQL与Oracle的区别
MySQL与Oracle的区别 1.收费区别 MySQL是轻量型数据库,开源免费.Oracle是收费的而且价格非常高: 2.实例区别 MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一 ...
- SQLplus 和mysql区别_mysql和oracle的区别有哪些
MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用:大多数数据库以类似的方式工作,但MySQL和Oracle的这里和那里总是存在一些差异的.本篇文章就给大家比较Or ...
- oracle 和mysql有什么区别_mysql和oracle的区别有哪些
原标题:mysql和oracle的区别有哪些 MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用:大多数数据库以类似的方式工作,但MySQL和Oracle的这里和那 ...
- mysql group b_mysql报错之5.7版本的 group by mysql不能使用group by
mysql 查询提示 SELECT list is not in GROUP BY clause and contains nonaggregated column 'user_login.user_ ...
最新文章
- 【列表】python编程列表解析
- YYAnimatedImageView--gif在ios14之后只能播放一次
- ios 静态方法是否能被重写_小米新系统亮相,比苹果iOS更干净,21款手机支持升级...
- Interview:算法岗位面试—10.15下午—上海某公司算法岗位(偏机器学习,合资制造行业)技术面试考点之电话面试—研究项目的技术考察
- 第四次作业-四则运算
- 2018年7月5日笔记
- 这场戏里,到底是谁脏了?
- 你还认识变量吗?Java基础学习不可略过的基本语法,简而不漏,变量的定义赋值和分类,系统认识Java中的变量有哪些?
- 尝试引用非结构体数组的字段_剖析PHP底层数组是如何实现的
- java web接收tcp_Java多线程实现TCP网络Socket编程(C/S通信)
- 多线程之生产者与消费者问题
- ip domain-lookup命令解释
- Mac之间的 远程控制
- could和may区别请求_英语教学:外教这样区分can,may,could
- 信号调理方法总结笔记
- 苹果输入法怎么换行_最全的输入法皮肤,你想要的百度输入法都有
- Pyqt5 pandas matplotlib network自用操作
- 如何挖掘网站的长尾关键词?
- 购买计算机的作文英语,电脑英语作文_电脑,computer,英文_高中英语作文_作文地带...
- 黑马旅游网完整代码_JavaWeb+黑马旅游网
热门文章
- 360浏览器广告太多怎么办_360浏览器如何关闭广告自动推送
- Python random模块seed理解
- 部署java项目_企业最看重什么样的Java人才?
- 【Jmeter篇】jmeter+Ant+Jenkins接口自动化测试集成之报告优化(三)
- RuntimeError: Working outside of request context. This typically means that you attempted to use fun
- node中间件KOA函数
- Python爬虫从入门到放弃(二十)之 Scrapy分布式原理
- Hadoop集群(一) Zookeeper搭建
- 11.4 专利法与反不正当竞争法解读
- php 验证码需开启gd2