SQL数据处理函数

Aggregate 函数

SQL Aggregate 函数计算从中取得的值,返回一个单一的值。

常用aggregate函数:

函数描述
AVG()返回平均值
COUNT()返回行数
MAX()返回最大值
MIN()返回最小值
SUM()返回总和

COUNT()函数的应用

SQL COUNT(*) 语法

//返回表中的记录数
SELECT COUNT(*) FROM table_name;

SQL COUNT(column_name) 语法

//返回指定列的值的数目(NULL 不计入)
SELECT COUNT(column_name) FROM table_name;

//实例:返回countries表中国家的数目
SELECT COUNT(name) AS total_country FROM countries

SQL COUNT(DISTINCT column_name) 语法

//返回指定列的不同值的数目
SELECT COUNT(DISTINCT column_name) FROM table_name;

//实例:返回countries表中continent的数目
SELECT COUNT(DISTINCT region) FROM countries 

CASE 函数

计算条件列表,并返回多个可能的结果表达式之一。可以在sql中对字段进行简单的处理。严格的意义上来讲case函数已经试流程控制语句了,不是简单意义上的函数,不过为了方便,很多人将case函数称为流程控制函数。
用法详解

简单CASE函数

简单CASE函数语法

CASE  <col_name>
   WHEN <value1> THEN <result1>
   WHEN <value2> THEN <result2>
   ...
   ELSE <result>
END 

实例

SELECT name AS student,
(CASE WHEN score='A' THEN '优'
    WHEN score='B' THEN '良'
    WHEN score='C' THEN '及格'
    ELSE '不及格' END) AS remark
)
FROM student_score

输出结果为:

studentremark
小红
小明
小白不及格
小黑
小黄及格

CASE条件表达函数

CASE条件表达函数语法

CASE
    WHEN <条件1> THEN <结果1>
    WHEN <条件2> THEN <结果2>
    ...
    ELSE <结果>
END 

实例:

SELECT name AS student,
(CASE WHEN score>=90 THEN '优'
    WHEN score>=80 THEN '良'
    WHEN score='C'>=60 THEN '及格'
    ELSE '不及格' END) AS remark
)
FROM student_score

CASE函数的其他经典用法

实例1
统计A班中男女同学的人数,以及男女同学的及格人数

SELECT
SUM(CASE WHEN stu_sex='男' THEN 1 ELSE 0 END) AS MALE
SUM(CASE WHEN stu_sex='女' THEN 1 ELSE 0 END) AS FEMALE
SUM(CASE WHEN stu_sex='男' AND score >= 60 THEN 1 ELSE 0 END) AS MALE_PASS
SUM(CASE WHEN stu_sex='女' AND score >=60 THEN 1 ELSE 0 END) AS FEMALE_PASS

输出结果:

MALEFEMALEMALE_PASSFEMALE_PASS
27252423

实例2
统计各个城市的水耗、电耗、热耗
表中city列表示城市,type表示耗能类型(type=0,1,2),value表示耗能量

cityvaluetype
北京28.500
北京23.511
北京28.122
北京12.300
北京15.461
上海18.880
上海16.661
上海19.990
上海10.050
SELECT city,
SUM( CASE WHEN type=0 THEN value ELSE 0 END) AS WATER_ENERGY
SUM( CASE WHEN type=1 THEN value ELSE 0 END) AS ELE_ENERGY
SUM( CASE WHEN type=2 THEN value ELSE 0 END) AS HEAT_ENERGY
FROM ENERGY_COST
ORDER BY city

输出结果为

cityWATER_ENERGYELE_ENERGYHEAT_ENERGY
北京40.8038.9728.12
上海48.9216.660
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值