一、计算字段

  1.1拼接字段

  一般情况下返回的字段是指定列的属性名。如果有时我们对返回格式有特殊要求。

  例如,我们需要将显示商品名,即商品价格,同时商品名后面的价格放在括号内。

  prod_name(prod_price) 以这种方式显示数据。

  这时我们就需要使用拼接字段。

  

  

  

  可以看到显示的 数据是以prod_name(prod_price)的格式显示的。  

  实现这个功能的过程中使用了一个函数:CONCAT(str1,str2,...)。

  该函数将str1,str2,..拼接起来显示。

  1.2使用别名

  上例中的列名是SELECT语句后面的名称,但这个可读写不强。我们可以通过为改列指定一个别名

  然后显示的就是我们指定的别名了。别名通过as指定,as可省略不写。

  

  第一列的名称从CONCAT(prod_name, '(',prod_price, ')')变成了prod_name_price。

  指定别名可以使列名更具可读性。

  1.3字段计算

  例如有一列为单价,有一列为数量,我们需要返回一列总价,但是总价在表中并未存储。

  这时我们就可以单价*数量,这种方式间接的获取总价。

  

  

  通过quantity * item_price计算,并为其起一个别名total。

二、函数

  2.1数据处理函数

  SQL提供一些函数,以便于对数据进行操作。

  但不同的数据库管理软件对函数的支持不一致,具体需查阅对应文档。

  

  2.1.1 UPPER()将文本内容转换为大写。

  

  

  

  2.1.2 YEAR() 获取数据类型为日期的年份,MONTH()获取数据类型为日期的月份,DAY()获取数据类型为日期的天数。

  

  获取数据类型为日期的年、月、日前提是改数据是日期类型,可以看到order_date的类型是datetiem.

  

  

  获取所有一月份的订单。

  SQL中还有很多函数,具体可查阅对应文档。

  

  2.2聚集函数

  聚集函数和前面的函数不同,它不返回全部的检索数据,只返回我们需要的数据。

  例如计算当前表有多少行,并不需要返回每一行,只需要返回一个总行数即可。

  同样计算指定列的最大值,也不需要返回所有列,只需要该列的最大值即可。

 

  2.2.1 AVG()

  计算平均值,只返回一个平均值

  

  

  

  计算prod_id为‘BR01’的item_price的平均值.

  

  2.2.2COUNT()

  用于计数,COUNT(*)对表中行数进行计数,null也计入总数中。

  COUNT(colName)对指定列进行计数,null不计入总数中。

  

  

  

  

  此时返回的是总行数5.

  

  

  此时返回的cust_email这一行,此时emali为空的行没有被记入总数。

  

  2.2.3MAX(),MIN()

  返回指定列中最大、最小值。

  

  

  prod_price的最大值与最小值。

  

  2.2.4SUM()

  计算指定列的和。

  

  

  SUM(price * quantity),计算单价*数量,然后通过SUM求和可以计算出所有总价。

  SELECT后可以跟随多个聚合函数

  SELECT AVG(colName), COUNT(colName), SUM(colName) FROM tableName;

  

  但不能这样写:

  SELECT AVG(colName), UPPER(colName) FROM tableName;

  UPPER不是聚集函数,返回的不是单个值,而是检索出来的所有结果进行大写转换。

  而AVG只返回一个值,这是冲突的。

  

参考资料:

《SQL必知必会》

1.3(SQL学习笔记)计算字段及函数的更多相关文章

  1. SQL学习之计算字段的用法与解析

    一.计算字段 1.存储在数据库表中的数据一般不是应用程序所需要的格式.大多数情况下,数据表中的数据都需要进行二次处理.下面举几个例子. (1).我们需要一个字段同时显示公司名和公司地址,但这两个信息存 ...

  2. openerp学习笔记 计算字段、关联字段(7.0中非计算字段、关联字段只读时无法修改保存的问题暂未解决)

    计算字段.关联字段,对象修改时自动变更保存(当 store=True 时),当 store=False 时,默认不支持过滤和分组7.0中非计算字段.关联字段只读时无法修改保存的问题暂未解决 示例代码: ...

  3. openerp学习笔记 计算字段支持搜索

    示例1: # -*- encoding: utf-8 -*-import poolerimport loggingimport netsvcimport toolslogger = netsvc.Lo ...

  4. 【SQL学习笔记】排名开窗函数,聚合开窗函数(Over by)

    处理一些分组后,该组按照某列排序后 ,取其中某条完整数据的问题. 或 按照其中不同列分组后的聚合 比如 sum,avg之类. MSDN上语法: Ranking Window Functions < ...

  5. ORALCE PL/SQL学习笔记

    ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料

  6. Hadoop源码学习笔记(2) ——进入main函数打印包信息

    Hadoop源码学习笔记(2) ——进入main函数打印包信息 找到了main函数,也建立了快速启动的方法,然后我们就进去看一看. 进入NameNode和DataNode的主函数后,发现形式差不多: ...

  7. SQL学习笔记

    SQL(Structured Query Language)学习笔记 [TOC] Terminal登录数据库 1.登录mysql -u root -p ; 2.显示所有数据库show database ...

  8. Oracle之PL/SQL学习笔记

    自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...

  9. sql 学习笔记 档

    从下面的内容 3c   school 1:Sql 它分为两部分: 6 2:查询 7 3:插入: 9 4:数据库更新 UPDATE 9 5:删除 DELETE 10 6:Sql TOP 子句: 10 7 ...

随机推荐

  1. 数字签名算法rsa

    数字签名算法消息传递模型 由消息发送方构建密钥对,这里由甲方完成. 由消息发送方公布公钥至消息接收方,这里由甲方将公钥公布给乙方. 注意如加密算法区别,这里甲方使用私钥对数据签名,数据与签名形成一则消 ...

  2. supervisor 简单使用

    supervisor是一个c/s系统,被用来在类Unix系统中监控进程状态.supervisor使用python开发. 服务端进程为supervisord,主要负责启动自身及其监控的子进程,响应客户端 ...

  3. Django rest framework 版本控制(源码分析)

    基于上述分析 #2.处理版本信息 处理认证信息 处理权限信息 对用户的访问频率进行限制 self.initial(request, *args, **kwargs) #2.1处理版本信息 #versi ...

  4. gpio子系统和pinctrl子系统(下)

    情景分析 打算从两个角度来情景分析,先从bsp驱动工程师的角度,然后是驱动工程师的角度,下面以三星s3c6410 Pinctrl-samsung.c为例看看pinctrl输入参数的初始化过程(最开始的 ...

  5. tomcat组成介绍和调优方案

    1.tomcat组成介绍 1.1 目录组成介绍 1.2 启动tomcat中遇到的问题 a.启动过程中出现很多异常:因为端口被占用了 解决方式1:修改Tomcat\conf\server.xml中的默认 ...

  6. clearcase command (windows 常用的几个)

    command 1. setview  指定某个view你可以操作,否则你将看不到文件,ls,cd 等其它命令无效 setview  viewname 2. rename branch type na ...

  7. JavaScript中对象的属性类型

    JavaScript中,对象的属性有两种:数据属性和访问器属性. 数据属性 特性: 数据属性包括一个数据值的位置.在这个位置可以读取和写入值.数据属性有4个特性. [[configurable]]:可 ...

  8. Python Flask装饰器登录验证

    from flask import Flask,render_template,redirect,request,session app = Flask(__name__) app.secret_ke ...

  9. SPOJ - SUBST1 D - New Distinct Substrings

    D - New Distinct Substrings 题目大意:求一个字符串中不同子串的个数. 裸的后缀数组 #include<bits/stdc++.h> #define LL lon ...

  10. Flexigrid默认是可以选择多行

    1.Flexigrid默认是可以选择多行,那么如何设置其只能选一行呢?今天看了看Flexigrid的源码,发现有个属性可以控制: $(this).click(function (e) { var ob ...