MySQL统计数据

MySQL统计数据,第1张

您好,单个select语句实现MySQL查询统计次数的方法用处在哪里呢?用处太多了,比如一个成绩单,你要查询及格得人数与不及格的人数,怎么一次查询出来?

MySQL查询统计次数简单的语句肯定是这样了:

select a.name,count_neg,count_plus from

(select count(id) as count_plus,name from score2 where score >=60 group by name) a,

(select count(id) as count_neg,name from score2 where score <=60 group by name) b

where a.name=b.name

即必须至少用2个语句。

今天刚好碰到发现mysql支持if,那就创造性的用if来实现吧:

select name, sum(if(score>=60,1,0)),sum(if(score<60,1,0)) from score2 group by name

单个select语句实现MySQL查询统计次数的方法简单吧。

原理就是大于60,就赋值为1,那么sum就是计数了。

sum函数在数据库是number类型的,你的代码中可以使用任何装的下数字型都可以接收。如:sum的值小于java中int的最大值,你就可以用int接收;如果大于Int的最大值而小于double的最大值,你就可以用double。一般在程序设计时,如果不确定它的值范围,可以用long型接收。

处理“我想查 IF中同时满足这两个条件的总数”

我的理解是:

SELECT COUNT(*) FROM tougao_record WHERE accept_company_id=100 AND channel_type=1 AND check_status=6

下面是if语句里面多个条件的使用。

IF语句的标准形式IF(expr1,expr2,expr3)

expr1可以是单个表达式也可以是多个表达式,且&&,或||,非!

上面的语句可以这样写

select COUNT(IF(channel_type=1 &&check_status=6),1,0) FROM tougao_record WHERE accept_company_id=100

但是就我的理解,mysql在统计count的时候,不管count括号里面的内容,只管是否为空,查询的结果不为空就计数。

我是处理下面的问题用到了,可以直接跑一下我给的sql语句。

SET @destval:='0.63'

SET @valforcomp='0.62'

SELECT 

IF(@destval REGEXP '^[\-\+.]?([0-9.]+)$' && @valforcomp REGEXP '^[\-\+.]?([0-9.]+)$',

IF(ABS(@destval-@valforcomp)<0.02,1,0),NULL) result

上面的REGEXP只是简单的用来判断是否是数字,通过这个我还发现了另一个问题,

SELECT ABS(@destval-@valforcomp)

这个查询出来不是等于0.01而是0.010000000000000009

不知道有没有帮到你。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7674658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存