mysql 统计 1的数量_利用MySQL统计一列中不同值的数量方法示例
前言
本文实现的这个需求其实十分普遍,举例来说,我们存在一个用户来源表,用来标记用户从哪个渠道注册进来。表结构如下所示…
其中 origin 是用户来源,其中的值有 iPhone 、Android 、Web 三种,现在需要分别统计由这三种渠道注册的用户数量。
解决方案1
SELECT count(*)
FROM user_operation_log
WHERE origin = 'iPhone';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Android';
SELECT count(*)
FROM user_operation_log
WHERE origin = 'Web';
用 where 语句分别统计各自的数量。
这样查询的量有点多了,如果这个值有 10 个呢,那还得写 10 条相似的语句,很麻烦。
有没有一条语句就搞定的呢?于是去查了些资料。
解决方案2
我们知道 count 不仅可以用来统计行数,也能统计列值的数量,例如:
统计 user_operation_log 有多少行:
SELECT count(*) FROM user_operation_log
统计 origin 这列值不为 NULL 的数量:
SELECT count(origin) FROM user_operation_log
所以我们可以利用这个特性来实现上面的需求
第一种写法(用 count 实现)
SELECT
count(origin = 'iPhone' OR NULL) AS iPhone,
count(origin = 'Android' OR NULL) AS Android,
count(origin = 'Web' OR NULL) AS Web
FROM user_operation_log;
查询结果
第二种写法(用 sum 实现)
SELECT
sum(if(origin = 'iPhone', 1, 0)) AS iPhone,
sum(if(origin = 'Android', 1, 0)) AS Android,
sum(if(origin = 'Web', 1, 0)) AS Web
FROM user_operation_log;
查询结果
第三种写法(改写 sum)
SELECT
sum(origin = 'iPhone') AS iPhone,
sum(origin = 'Android') AS Android,
sum(origin = 'Web') AS Web
FROM user_operation_log;
查询结果
第四种写法(来自掘金用户 杰夫 的答案)
SELECT origin,count(*) num FROM user_operation_log GROUP BY origin;
查询结果
至此,已经达到了我们的需求。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
mysql 统计 1的数量_利用MySQL统计一列中不同值的数量方法示例相关推荐
- MySQL查询某个列中相同值的数量统计
前言 今天突然想到自己写的课表查询Api没有加统计功能,因此今天加上了统计,记录了请求的类型.事件和时间,等新学期到来的时候就能用上了,毕竟刚开学同学们还是比较在意这学期都有什么课的哈哈哈,而且也能够 ...
- mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表
/*** mysqli op mysql demo*//***公用函数*//***功能:列出一个数据库的所有表*@param$dbname*@param$con*/functionlist_tabl ...
- mysql 查询数据库索引语句_利用SQL语句查询数据库中所有索引
本章我们就要讲解一下如何利用sql语句来查询出数据库中所有索引明细.当然了,我们可以在microsoft sql server management studio中选择"表"- & ...
- mysql用binlog恢复数据_利用mysql的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- mysql自动拉入黑名单_利用MySQL实现域名黑名单过滤10W记录1ms匹配
先说一下这个需求,需要判断某个域名是否在黑名单中.黑名单中的域名一旦设置,其下任何级的域名都认为是在黑名单中. 如黑名单中加入a.com,则a.com.www.a.com.1.2.3.a.com等都算 ...
- mysql一键更改图片地址_利用mysql语句批量替换指定wordpress文章图片路径
有时候当你看到一篇十分优秀的国外文章的时候,比如说十个优秀.五十个优秀的网站设计欣赏.wordpress主题下载.jquery插件下载等等. 这些文章当中往往会跟随大量的示例图片供读者查看,如果这些文 ...
- python时间间隔标准化输出_利用Python将时间或时间间隔转为ISO 8601格式方法示例...
前言 大家都知道,Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval)并没有提供转换的函数,下面我们动手写一个. 下面话不多说 ...
- Excel统计一列中某个值出现的次数
背景 帮朋友统计腾讯问卷星上的回答,问卷星默认导出的值为数字,例如一个问题有ABCD四个选择,则各自对应数字1234,导出的Excel文件中第一行为问题,随后此列所有的值为对应的选项数字,需要自行通过 ...
- mysql基数是什么意思_谈谈MySQL中的基数是啥?
1基数是啥? 大白话讲:基数指的就是MySQL表中某一列的不同值的数量. 如果这一列是唯一索引,那基数 == 行数. 如果这一列是sex,枚举类型只有男女,那它是基数就是2.Cardinality越高 ...
最新文章
- Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID (Java版)
- jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
- 【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t
- Ajax — 新闻列表
- c++的STL中的map(哈希表)与unordered_map
- 品方牌可以利用视号频做什么
- 时间序列模型ARIMA -- 唐宇迪
- IT人的职业生涯规划
- React15中的栈调和diff算法
- Golang优秀开源项目汇总
- 网易微专业python全栈工程师_Python学习笔记:6.3.10 flash WTF数据验证,6310flaskwtf
- 路由器的连接——图解
- 为什么你的需求估算老是翻车?看看这个故事就明白了......
- 【央联众商】进行家庭投资理财选择的必要性
- 如何脱离USB给ESP8266下载程序?
- POJ 3253 Fence Repair(修篱笆)
- 众多球员吐槽主办方 甘超宇:完全不像一个国际赛事
- 计算机上找不到e.f盘怎么班,windows 10使用过程中突然找不到E盘了
- “武汉疫情后,中国将发生这3种改变”,17年前的非典早预言了一切
- 关于数据跳线制作的标准规范的理解