前言

本文实现的这个需求其实十分普遍,举例来说,我们存在一个用户来源表,用来标记用户从哪个渠道注册进来。表结构如下所示…

其中 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统计一列中不同值的数量方法示例相关推荐

  1. MySQL查询某个列中相同值的数量统计

    前言 今天突然想到自己写的课表查询Api没有加统计功能,因此今天加上了统计,记录了请求的类型.事件和时间,等新学期到来的时候就能用上了,毕竟刚开学同学们还是比较在意这学期都有什么课的哈哈哈,而且也能够 ...

  2. mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表

    /*** mysqli  op mysql demo*//***公用函数*//***功能:列出一个数据库的所有表*@param$dbname*@param$con*/functionlist_tabl ...

  3. mysql 查询数据库索引语句_利用SQL语句查询数据库中所有索引

    本章我们就要讲解一下如何利用sql语句来查询出数据库中所有索引明细.当然了,我们可以在microsoft sql server management studio中选择"表"- & ...

  4. mysql用binlog恢复数据_利用mysql的binlog恢复数据

    MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...

  5. mysql自动拉入黑名单_利用MySQL实现域名黑名单过滤10W记录1ms匹配

    先说一下这个需求,需要判断某个域名是否在黑名单中.黑名单中的域名一旦设置,其下任何级的域名都认为是在黑名单中. 如黑名单中加入a.com,则a.com.www.a.com.1.2.3.a.com等都算 ...

  6. mysql一键更改图片地址_利用mysql语句批量替换指定wordpress文章图片路径

    有时候当你看到一篇十分优秀的国外文章的时候,比如说十个优秀.五十个优秀的网站设计欣赏.wordpress主题下载.jquery插件下载等等. 这些文章当中往往会跟随大量的示例图片供读者查看,如果这些文 ...

  7. python时间间隔标准化输出_利用Python将时间或时间间隔转为ISO 8601格式方法示例...

    前言 大家都知道,Python自带的datetime库提供了将datetime转为ISO 8610格式的函数,但是对于时间间隔(inteval)并没有提供转换的函数,下面我们动手写一个. 下面话不多说 ...

  8. Excel统计一列中某个值出现的次数

    背景 帮朋友统计腾讯问卷星上的回答,问卷星默认导出的值为数字,例如一个问题有ABCD四个选择,则各自对应数字1234,导出的Excel文件中第一行为问题,随后此列所有的值为对应的选项数字,需要自行通过 ...

  9. mysql基数是什么意思_谈谈MySQL中的基数是啥?

    1基数是啥? 大白话讲:基数指的就是MySQL表中某一列的不同值的数量. 如果这一列是唯一索引,那基数 == 行数. 如果这一列是sex,枚举类型只有男女,那它是基数就是2.Cardinality越高 ...

最新文章

  1. Twitter的分布式雪花算法 SnowFlake 每秒自增生成26个万个可排序的ID (Java版)
  2. jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
  3. 【报错】ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds t
  4. Ajax — 新闻列表
  5. c++的STL中的map(哈希表)与unordered_map
  6. 品‮方牌‬可以利用视‮号频‬做什么
  7. 时间序列模型ARIMA -- 唐宇迪
  8. IT人的职业生涯规划
  9. React15中的栈调和diff算法
  10. Golang优秀开源项目汇总
  11. 网易微专业python全栈工程师_Python学习笔记:6.3.10 flash WTF数据验证,6310flaskwtf
  12. 路由器的连接——图解
  13. 为什么你的需求估算老是翻车?看看这个故事就明白了......
  14. 【央联众商】进行家庭投资理财选择的必要性
  15. 如何脱离USB给ESP8266下载程序?
  16. POJ 3253 Fence Repair(修篱笆)
  17. 众多球员吐槽主办方 甘超宇:完全不像一个国际赛事
  18. 计算机上找不到e.f盘怎么班,windows 10使用过程中突然找不到E盘了
  19. “武汉疫情后,中国将发生这3种改变”,17年前的非典早预言了一切
  20. 关于数据跳线制作的标准规范的理解

热门文章

  1. Optical Flow related Tutorials
  2. array variable used in printf function
  3. 篮球弹起问题(for循环)
  4. SVN安装,SVN服务搭建与eclipse里插件安装
  5. python生成随机数方法_详解用python生成随机数的几种方法
  6. dbvisualizer报错No JVM
  7. python中使用selenium模块登录QQ邮箱
  8. 赫夫曼树的定义及原理
  9. 90%测试猿都想学的Jmeter技能,你get吗?
  10. 资深和新手的100大 Selenium面试问答