仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 917|回复: 8
打印 上一主题 下一主题

[学习教程] 公布MySQL初级特征之汇合函数

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 20:12:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。到如今为止,你只进修了怎样依据特定的前提从表中掏出一条或多笔记录。可是,假设你想对一个表中的纪录举行数据统计。比方,假如你想统计存储在表中的一次平易近意检验的投票了局。大概你想晓得一个会见者在你的站点上均匀消费了几工夫。要对表中的任何范例的数据举行统计,都必要利用汇合函数。你能够统计纪录数量,均匀值,最小值,最年夜值,大概乞降。当你利用一个汇合函数时,它只前往一个数,该数值代表这几个统计值之一。
这些函数的最年夜特性就是常常和GROUPBY语句共同利用,必要注重的是汇合函数不克不及和非分组的列夹杂利用。
行列计数
盘算查询语句前往的纪录行数
间接盘算函数COUNT(*)的值,比方,盘算pet表中猫的只数:
MySQL>SELECTcount(*)FROMpetWHEREspecies=’cat’;
+----------+
|count(*)|
+----------+
|2|
+----------+
统计字段值的数量
比方,盘算pet表中species列的数量:
mysql>SELECTcount(species)FROMpet;
+----------------+
|count(species)|
+----------------+
|9|
+----------------+
假如不异的品种呈现了不止一次,该品种将会被盘算屡次。假如你想晓得品种为某个特定值的宠物有几个,你可使用WHERE子句,以下例所示:
mysql>SELECTCOUNT(species)FROMpetWHEREspecies=cat;
注重这条语句的了局:
+----------------+
|COUNT(species)|
+----------------+
|2|
+----------------+
这个例子前往品种为cat的作者的数量。假如这个名字在表pet中呈现了两次,则次函数的前往值是2。并且它和下面提到过的语句的了局是分歧的:
SELECTcount(*)FROMpetWHEREspecies=’cat’
实践上,这两条语句是等价的。
假设你想晓得有几分歧品种的的宠物数量。你能够经由过程利用关头字DISTINCT来失掉该数量。以下例所示:
mysql>SELECTCOUNT(DISTINCTspecies)FROMpet;
+-------------------------+
|COUNT(DISTINCTspecies)|
+-------------------------+
|5|
+-------------------------+
假如品种cat呈现了不止一次,它将只被盘算一次。关头字DISTINCT决意了只要互不不异的值才被盘算。
一般,当你利用COUNT()时,字段中的空值将被疏忽。
别的,COUNT()函数一般和GROUPBY子句共同利用,比方能够如许前往每种宠物的数量:
mysql>SELECTspecies,count(*)FROMpetGROUPBYspecies;
+---------+----------+
|species|count(*)|
+---------+----------+
|bird|2|
|cat|2|
|dog|3|
|hamster|1|
|snake|1|
+---------+----------+
盘算字段的均匀值
必要盘算这些值的均匀值。利用函数AVG(),你能够前往一个字段中一切值的均匀值。
假设你对你的站点举行一次较为庞大的平易近意查询拜访。会见者能够在1到10之间投票,暗示他们喜好你站点的水平。你把投票了局保留在名为vote的INT型字段中。要盘算你的用户投票的均匀值,你必要利用函数AVG():
SELECTAVG(vote)FROMopinion
这个SELECT语句的前往值代表用户对你站点的均匀喜好水平。函数AVG()只能对数值型字段利用。这个函数在盘算均匀值时也疏忽空值。
再给出一个实践例子,比方我们要盘算pet表中每种植物岁数的均匀值,那末利用AVG()函数和GROUPBY子句:
mysql>SELECTspecies,AVG(CURDATE()-birth)FROMpetGROUPBYspecies;
前往的了局为:
+---------+----------------------+
|species|AVG(CURDATE()-birth)|
+---------+----------------------+
|bird|34160|
|cat|74959.5|
|dog|112829.66666667|
|hamster|19890|
|snake|49791|
+---------+----------------------+
盘算字段值的和
假定你的站点被用来出卖某种商品,已运转了两个月,是该盘算赚了几钱的时分了。假定有一个名为orders的表用来纪录一切会见者的定购信息。要盘算一切定购量的总和,你可使用函数SUM():
SELECTSUM(purchase_amount)FROMorders
函数SUM()的前往值代表字段purchase_amount中一切值的总和。字段purchase_amount的数据范例大概是DECIMAL范例,但你也能够对别的数值型字段利用函数SUM()。
用一个不太得当的例子申明,我们盘算pet表中同种宠物的岁数的总和:
mysql>SELECTspecies,SUM(CURDATE()-birth)FROMpetGROUPBYspecies;
你能够检察了局,与前一个例子对比:
+---------+----------------------+
|species|SUM(CURDATE()-birth)|
+---------+----------------------+
|bird|68320|
|cat|149919|
|dog|338489|
|hamster|19890|
|snake|49791|
+---------+----------------------+
盘算字段值的极值
求字段的极值,触及两个函数MAX()和MIN()。
比方,仍是pet表,你想晓得最早的植物出身日期,因为日期最早就是最小,以是可使用MIN()函数:
mysql>SELECTMIN(birth)FROMpet;
+------------+
|MIN(birth)|
+------------+
|1989-05-13|
+------------+
可是,你只晓得了日期,仍是没法晓得是哪只宠物,你大概想到如许做:
SELECTname,MIN(birth)FROMpet;
可是,这是一个毛病的SQL语句,由于汇合函数不克不及和非分组的列夹杂利用,这里name列是没有分组的。以是,你没法同时失掉name列的值和birth的极值。
MIN()函数一样能够与GROUPBY子句共同利用,比方,找出每种宠物中最早的出身日期:
mysql>SELECTspecies,MIN(birth)FROMpetGROUPBYspecies;
上面是使人中意的了局:
+---------+------------+
|species|MIN(birth)|
+---------+------------+
|bird|1997-12-09|
|cat|1993-02-04|
|dog|1989-05-13|
|hamster|1999-03-30|
|snake|1996-04-29|
+---------+------------+
另外一方面,假如你想晓得比来的出身日期,就是日期的最年夜值,你可使用MAX()函数,以下例所示:
mysql>SELECTspecies,MAX(birth)FROMpetGROUPBYspecies;
+---------+------------+
|species|MAX(birth)|
+---------+------------+
|bird|1998-09-11|
|cat|1994-03-17|
|dog|1990-08-31|
|hamster|1999-03-30|
|snake|1996-04-29|
+---------+------------+
总结
在本节中,先容了一些典范的汇合函数的用法,包含计数、均值、极值和总和,这些都是SQL言语中十分经常使用的函数。
这些函数之以是称之为汇合函数,是由于它们使用在多笔记录中,以是汇合函数最多见的用法就是与GROUPBY子句共同利用,最主要的是汇合函数不克不及同未分组的列夹杂利用。
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。
莫相离 该用户已被删除
沙发
发表于 2015-1-18 18:47:04 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
柔情似水 该用户已被删除
板凳
发表于 2015-1-27 11:03:20 | 只看该作者
XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)
分手快乐 该用户已被删除
地板
发表于 2015-2-5 10:11:06 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
变相怪杰 该用户已被删除
5#
发表于 2015-2-11 09:09:03 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
乐观 该用户已被删除
6#
发表于 2015-3-2 08:42:05 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 03:39:27 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
小女巫 该用户已被删除
8#
发表于 2015-3-17 20:10:31 | 只看该作者
如果你是从“学习某一种数据库应用软件,从而获得应聘的资本和工作机会”的角度来问的话。
透明 该用户已被删除
9#
发表于 2015-3-25 00:23:33 | 只看该作者
sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-30 00:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表