• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    利用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 行转列和列转行实例详解
    • MYSQL数据库中的现有表增加新字段(列)
    • mysql简单实现查询结果添加序列号的方法
    • 如何使用MySQL查询某个列中相同值的数量统计
    • Mysql中返回一个数据库的所有表名,列名数据类型备注
    • MySQL 添加、修改、删除表的列及约束等表的定义
    • 数据库实现行列转换(mysql示例)
    • MySQL存储过程中使用动态行转列
    • mysql 列转行,合并字段的方法(必看)
    • mysql 将列值转变为列的方法
    • mysql5.7 生成列 generated column用法实例分析
    上一篇:MySQL 5.7.18 release版安装指南(含有bin文件版本)
    下一篇:一步步教你配置MySQL远程访问
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    利用MySQL统计一列中不同值的数量方法示例 利用,MySQL,统计,一,列中,