数据分析人必掌握的数据库语言SQL第

中科白癜风医院爱心捐助 http://m.39.net/disease/a_5496904.html

本篇文章围绕SQL,重点为大家介绍创建计算字段、使用函数处理数据和汇总数据。

01创建计算字段

什么是计算字段?如何创建计算字段?以及如何从应用程序中使用别名引用它们?下面就为大家解答下刚刚的几个问题。

计算字段

存储在数据库表中的数据一般不是应用程序所需要的格式,举两个例子:

需要显示公司名,同时还需要显示公司的地址,但这两个信息存储在不同的表列中。

列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。

上述例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据,然后再在客户端应用程序中重新格式化。

拼接字段

假如要生成一个供应商报表,需要在格式化的名称中列出供应商的位置。此报表需要一个值,而表中数据存储在两个列vend_name和vend_country中,我们该如何创建这个组合值呢?

在SQL中的SELECT语句中,可使用一个特殊的操作符来拼接两个列。

根据你所使用的DBMS,此操作符可用加号(+)或两个竖杠(

)表示。

SQLServer使用+号,DB2、Oracle、PostgreSQL和SQLite使用

,在MySQL和MariaDB中,必须使用特殊的函数。

+号(多数DBMS使用这种语法):

SELECTvend_name+’(’+vend_country+’)’

FROMVendors

ORDERBYvend_name

语法:

SELECTvend_name

’(’

vend_country

’)’

FROMVendors

ORDERBYvend_name

使用MySQL或MariaDB时需要使用的语句:

SELECTConcat(vend_name,’(’,vend_country,’)’)

FROMVendors

ORDERBYvend_name

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术计算。

举个例子,Orders表包含收到的所有订单,OrderItems表包含每个订单中的各项物品。下面的SQL语句检索订单号中的所有物品。

SELECTprod_id,quantity,itemprice

FROMOrderItems

WHEREorder_num=

02使用函数处理数据

与大多数其他计算机语言一样,SQL也可以用函数来处理数据。

本文仅展示一些具有代表性的函数,大家并不需要一次全部记住,只需要知道有这样的函数就可以了,实际应用时可以随时查阅。

常见文本处理函数

日期和时间处理函数

日期和时间值以特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间,日期和时间函数在SQL中具有重要的作用,但每种DBMS都有自己的特殊形式。

Date函数

SQLServerDate函数

MySQLDate函数

数值处理函数

这些函数一般主要用于代数、三角或几何运算,因此不像字符串或日期、时间处理函数使用那么频繁。在主要DBMS的函数中,数值函数是最一致、最统一的函数。

03汇总数据

我们经常需要汇总数据,为此SQL提供了专门的函数,使用这些函数,SQL查询可用于检索数据,以便分析和报表生成。

这一类函数可以单独使用,如SELECTCOUNT(*)FROMstudent,也可以放在分组里使用,如SELECTclass,COUNT(*)FROMstudentgroupbyclass,下篇会为大家详细讲解分组数据。

聚集函数

聚集不同值

对所有行执行计算,ALL为默认行为,参数不需要指定,如果不指定DISTINCT,则假定为ALL。

举例:使用AVG()函数返回特定供应商提供的产品的平均价格。

SELECTAVG(DISTINCTprod_price)ASavg_price

FROMProducts

WHEREvend_id=’DLLO1’

组合聚集函数

所有聚集函数例子都只涉及单个函数,SELECT语句可根据需要包含多个聚集函数。

SELECTCOUNT(*)ASnum_items,

MIN(prod_price)ASprice_min,

MAX(prod_price)ASprice_max,

AVG(prod_price)ASprice_avg

FROMProducts

分析:这里用单条SELECT语句执行了4个聚集计算。

以上就是本次分享的全部内容,下期重点为大家讲解分组数据,我们下期再见!

整理不易,点赞、转发帮忙点一下!




转载请注明:http://www.aierlanlan.com/rzgz/5427.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了