Mysql count+if 函数结合使用
Mysql count+if 函数结合使用
涉及函数
count函数
mysql中count函数用于统计数据表中的行的总数,或者根据查询结果统计某一列包含的行数,常见的用法如下 count(*) 计算表的总行数,包括空值 count(字段名) 计算指定列下的总行数,忽略空值(这点很重要,后面我们将利用这个特性)
if(expr, v1, v2)函数
if(expr, v1, v2) 函数的意思是,如果表达式expr为true(expr<>0 and expr <> NULL),则if()返回的是v1,否则返回v2
组合上述两个函数,可以在一条语句中统计出满足不同条件的行数
业务场景:在一个表中记录了不同出版社所拥有的所有的书,以及每本书对应的类型。
表结构如下:
id press bookName bookTyoe
1 新华出版社 《Thinking in Java》 计算机类
现需统计出不同出版社的里面不同类型的书籍的总量
例:统计不同出版社中文学类书籍数量
select count( if( bookTyoe = ‘文学类’, id, null ) ) from table group by press
分析:当type=1时,会返回对应的id的值,否则放回null,对于指定列的count函数,null是被忽略的,这样就得到了我们想要的统计数量了。
同理,统计不同出版社中科幻类+计算机书籍数量:
select count( if( bookTyoein (‘科幻类’, ‘计算机书籍’), id, null ) ) from table group by press
如果是联表查询,返回结果中的id不是唯一的话,想要去掉重复的id再统计,还可以在if前面加上DISTINCT,即 count( DISTINCT if( type in (2, 3), id, null ) )
等效写法 count( DISTINCT (type = 2 and type = 3) or null )
也可以使用sum+if替代上述写法
select sum( if( bookTyoeinin (‘科幻类’, ‘计算机书籍’), 1, 0 ) )from table group by press
小礼物走一走,来简书关注我
Mysql count+if 函数结合使用的更多相关文章
- mysql COUNT()函数 语法
mysql COUNT()函数 语法 作用:返回匹配指定条件的行数.博智达直线电机平台 语法:SELECT COUNT(*) FROM table_name mysql COUNT()函数 示例 // ...
- 【转】MySql中的函数
原文:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...
- MySQL 存储过程和函数
概述 一提到存储过程可能就会引出另一个话题就是存储过程的优缺点,这里也不做讨论,一般别人问我我就这样回答你觉得它好你就用它.因为mysql中存储过程和函数的语法非常接近所以就放在一起,主要区别就是函数 ...
- mysql内置函数大全
mysql 字符串函数用法集合 ASCII(str)返回字符串str的最左面字符的ASCII代码值. mysql> select ascii('d'); +------------+ | asc ...
- mysql中INSTR函数的用法
mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...
- Mysql字符串截取函数SUBSTRING的用法说明
感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:le ...
- MySQL中字符串函数详细介绍
MySQL字符串函数对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str)返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回N ...
- mysql创建自定义函数与存储过程
mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...
- MYSQL存储过程和函数学习笔记
学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...
随机推荐
- java 访问修饰符:public protected default private
- linux mutt的安装和使用
首先介绍一下mutt这个软件,它是一款基于文字界面的邮件客户端,非常小巧,但功能强大,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件附件. 我只讲它很小的一部分功能,因为我 ...
- Java数组初始
首先要清楚数组变量与数组对象的概念.数组变量是一个引用变量,可以指向数组对象. int[] a = new int[]{7, 8, 9}; a是数组变量,指向有new创建的数组对象. 数 ...
- Angularjs 事件指令
1. 点击事件 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
- linux raid10管理维护
http://www.linuxidc.com/Linux/2015-10/124391.htm 制作raid10 http://www.linuxidc.com/Linux/2015-09/1 ...
- 开发框架:IOE 架构
ylbtech-开发框架:IOE 架构 传统的IOE架构(IBM小型机.EMC存储设备.Oracle数据库). 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 ...
- [UE4GamePlay架构(九)GameInstance(转)
GameInstance这个类可以跨关卡存在,它不会因为切换关卡或者切换游戏模式而被销毁.然而,GameMode和PlayController就会再切换关卡或者游戏模式时被引擎销毁重置,这样他们里面的 ...
- Hive基础之Hive表常用操作
本案例使用的数据均来源于Oracle自带的emp和dept表 创建表 语法: CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name ...
- pig和mysql脚本对比
测试数据位于:/home/hadoop/luogankun/workspace/sync_data/pig dept和emp表来源自oracle数据库自带的表 dept.txt ACCOUNTING ...
- python2 与python3中最大的区别(编码问题bytes&str
1,在python2.x 中是不区分bytes和str类型的,在python3中bytes和str中是区分开的,str的所有操作bytes都支持 python2 中 >>> s = ...