使用MySQL计算不同值列中方法数的示例
这一要求在本文中非常常见。例如,我们有一个用户源表来标识用户注册哪个通道。
本源是一个用户源,iPhone、Android和Web的价值分别为三,现在需要三个频道注册的用户数量。
解决方案1
选择计数(*)
从user_operation_log
在'iphone的起源=;
选择计数(*)
从user_operation_log
在'android的起源=;
选择计数(*)
从user_operation_log
WHERE origin ='Web';
语句用于分隔每个数字的。
所以查询的数量多了一点,如果值有10,就得写10个类似的语句,非常麻烦。
有没有要做的声明所以我去查了一些信息。
解决方案2
我们知道,计数不仅可以用来计算行数,而且可以计算列值的数目,例如:
在统计user_operation_log有多少行:
select count(*)从user_operation_log
统计来源:列出值的数目不为空:
select count(原产地)从user_operation_log
因此我们可以使用这个特性来实现上述需求。
第一种写作方法(在计数中实现)
选择
计数(来源= 'iphone'or空)为iPhone,
计数(来源= 'android'or空)为Android,
计数(来源= 'web'or null)作为Web
从user_operation_log;
查询结果
写作的第二种方式(总而言之)
选择
金额(如果(来源= 'iphone ',1, 0))为iPhone,
金额(如果(来源= 'android ',1, 0))为Android,
金额(如果(来源=网络',1, 0))作为Web
从user_operation_log;
查询结果
第三种写作方式(重写和)
选择
和(来源= 'iphone)为iPhone,
和(来源= 'android)为Android,
和(来源=网络)作为Web
从user_operation_log;
查询结果
写作的第四种方式(从杰夫,块金用户的答案)
选择计数(*)的起源,起源于user_operation_log组数;
查询结果
在这一点上,我们已经达到了我们的需要。
总结
以上就是本文的全部内容。我希望这篇文章的内容能帮助你学习或工作。如果有任何疑问,您可以留言,谢谢您的支持。