文档章节

SUM统计使用CASE WHEN

秋风醉了
 秋风醉了
发布于 2015/07/08 18:52
字数 384
阅读 107
收藏 0

SUM统计使用CASE WHEN

如下建立表结构,

create table test (
id int not null AUTO_INCREMENT,
type int not null,
value int not null,
primary key (id)
);

INSERT INTO test (type,value)VALUES(1,1),(2,2),(3,3),(4,4);

根据 根据type的值,value取不同的值,然后sum,如下,

select sum(case when type = 1 then value * 0.1 when type = 2 then value * 0.2 
when type = 3 then value *0.3 when type = 4 then value * 0.4 else value end) 
as total
from test ;

还比如说,如下的表结构,

create table test1(
id int not null AUTO_INCREMENT,
name varchar(50) not null,
birthday date not null,
primary key (id)
)

INSERT INTO test1(name,birthday) VALUES
('ll','1991-11-01'),('yy','2000-11-01'),('ss','2008-11-01'),('dd','2010-11-01');

如下查询,

select name , case when birthday < '1995-11-01' then 'old' when birthday < '2000-11-01' then 'ok' when
birthday < '2011-11-01' then 'young' else 'too  native' end  as hello from test1 ;

这就是case when 的基本用法。

SQL中还有其他的判断语句,如 IF 和 IFNULL,如下表结构,

create table test2 (
id int not null AUTO_INCREMENT,
name varchar(50) not null,
sex int not null,
primary key (id)
);

insert into test2 (name,sex) value('sdsd',1),('sdwe',2);

使用 IF 如下查询,

select name , if(sex = 1, 'male','fmale') as sex from test2 ;

IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

IFNULL(expr1,expr2)

假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

========================END========================

© 著作权归作者所有

秋风醉了
粉丝 251
博文 532
码字总数 405640
作品 0
朝阳
程序员
私信 提问
第5关《从零学会SQL:多表查询》练习题答案

复仇者联盟中多个人物之间有着关系,同样的,表和表之间也会有关系,这种关系在数据库里叫做联结(join),多表查找也是通过联结来实现的。 这是《从零学会sql》系列课程第5节课《多表查询》...

猴子聊人物
05/23
0
0
sql之case when用法详解

简单CASE WHEN函数只能应对一些简单的业务场景,而CASE WHEN条件表达式的写法则更加灵活。 CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。 简单CASE WHEN函数: 等同于,使用CASE WHEN...

我叫小糖主
05/13
0
0
mysql 语句case when

表的创建 CREATE TABLE ( int(10) NOT NULL AUTO_INCREMENT, name char(20) DEFAULT NULL, birthday datetime DEFAULT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 数据插入......

何同学echo
2013/12/09
0
0
MYSQL 中使用case when then 判断某字段是否为null

MYSQL 中使用case when then 判断某字段是否为null 错误方法: CASE columnName WHEN null THEN 0 ELSE columnName END 正确方法: CASE WHEN columnName is null THEN 0 ELSE columnName END......

少年已不再年少
2018/09/12
0
0
group by、rollup、cube的用法以及区别

在此使用oracle,oracle 中的用法为 group by rollup|cube,sql server中的用法为group by colomn with [rollup|cube] 首先要弄明白rollup 和cube,就要知道group by的用法,group by 为对列进...

springy
2018/07/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea下springboot 项目在static目录下添加文件不生效

idea下springboot 项目在static目录下添加文件不生效 问题描述 是这样子的,我的项目目录结构如下: 我在static目录下,创建了index.html和aaaa.jpg这两个文件。然后,启动服务访问 http://l...

wotrd
昨天
5
0
k8s1.14 一、环境

1. 4台虚拟机 (CentOS Linux release 7.2.1511 (Core) ) 192.168.130.211 master 192.168.130.212 node1 192.168.130.213 node2 192.168.130.214 node3 2. 设置服务器hostname 2.1 设置本机......

ThomasCheng
昨天
3
0
盖茨:如果我现在开创一家公司 将会专注于AI

新浪科技讯,北京时间 6 月 26 日凌晨消息,微软联合创始人比尔·盖茨(Bill Gates)在周一接受采访时表示,如果他今天从哈佛大学辍学并开创一家新公司,那么这家公司将会专注于人工智能(A...

linuxCool
昨天
1
0
聊聊feign的Retryer

序 本文主要研究一下feign的Retryer Retryer feign-core-10.2.3-sources.jar!/feign/Retryer.java public interface Retryer extends Cloneable { /** * if retry is permitted, retur......

go4it
昨天
10
0
HyperLogLog简介

  (1)HyperLogLog简介      在Redis 在 2.8.9 版本才添加了 HyperLogLog,HyperLogLog算法是用于基数统计的算法,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个...

SEOwhywhy
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部