mysql带条件取count记录数

参考方法三:

统计sub_type=‘REFUND_FEE’ 的记录数:

方法一.select count(sub_type) from t where t.sub_type=‘REFUND_FEE’;

方法二.select sum(if( B.sub_type=‘REFUND_FEE’ ,1,0)) from t;

方法三.select count(B.sub_type=‘REFUND_FEE’ or null) from t;

解释:

当select B.sub_type=‘REFUND_FEE’ 时:

如果sub_type为REFUND_FEE则返回1,

不空且不为REFUND_FEE否则返回0,

空时返回null。

所以B.sub_type=‘REFUND_FEE’ or null 只返回sub_type=‘REFUND_FEE’ 的,其余的都返回null ,而count(列名)时是不会统计null的个数的

注:count(*)会把null的个数也统计在内

项目sql

    SELECT subjectName,doctorName,count(1) AS sumNum,   count(OVERTIMES>0 or null) as overNum            //只统计OVERTIMES>0的数
from ht_personstreamWHERE 1=1<if test="subjectId!=‘‘ and subjectId!=‘null‘">   and subjectId = #{subjectId}</if><if test="startTime!=‘‘ and startTime!=‘null‘">   <![CDATA[ and date_format(ENDTIME, ‘%Y-%m-%d‘)>= #{startTime} ]]>        //mysql日期格式化</if><if test="endTime!=‘‘ and endTime!=‘null‘">   <![CDATA[ and date_format(ENDTIME, ‘%Y-%m-%d‘)<= #{endTime} ]]></if>GROUP BY  doctorId,subjectId
时间: 2024-10-05 04:09:39

mysql带条件取count记录数的相关文章

查看MySQL库中各个表记录数

说明,此方法只适合数据库库中表的记录数是较小的情况下,线上可以考虑采用,要是数据库的表特别的大的话,就不要采用此方法了,负责会导致mysql的服务器的负载特别的高,有可能导致服务器被挂掉的风险. for n in `mysql -uroot -p'12334' -e "use novel;show tables;"|sed '1d'`;do echo $n; mysql -uroot -p'12334' -e "use novel;select count(*) from $

mysql 带条件的sum/count 使用技巧

本测试只是简单测试,其用途不在于代替count函数配合where函数进行聚合计算,而是在复杂查询中在sum/count中加入条件,一次性求出不同条件下的聚合结果. 1.插入测试数据如图 2.sum计算(type=1)个数 或者使用中间加入if判断 3.到这里你一定会异想天开的以为count是不是也可以加条件,同样的方法在count中并不适用 加上if判断也不行 4.使用count加条件的方法可以使用以下方式 原文地址:https://www.cnblogs.com/yuanyuanyuan/p/

mysql带条件查询,联表查询

---恢复内容开始--- 1,用于设定所select出来的数据是否允许出现重复行(完全相同的数据行) all:允许出现--默认不写就是All(允许的). distinct:不允许出现--就是所谓的"消除重复行" 2,where:条件 3,group by:分组依据 后面加表的字段名,通常只进行一个字段的分组 mysql表查询语法形式:select [all | distinct] 字段名或表达式 from 表名 [where] [group by] [having] [order by

关于criteria分页中获取总记录数异常问题

一.情景在线 运维同事反馈了一个问题,说咱们查询分机号码的api 接口返回数据异常,具体的情况时是: 1.查询时第一页信息所返回的总记录数正确,数据正确. 2.查询第二页总记录数为 "0" ,数据为对应的第二页数据. what!!! 二.为题排查 按照同事的提供的线索,在本地复现发现-->果然如此! 传入当前页 pageNow>1 时 总数totel 将为零,且必现! 多次测试发现: 传入pageNow=1 控制台打印的sql select count(*) as y0_

navicat查看mysql数据表记录数不断变化

在使用navicat进行数据库管理的时候,在查看表对象的时候会发现,每次刷新,数据表的记录数不断变化,尤其是大表. 对于100万的数据经常会显示九十几万,当然通过count(*)出来的数据是正确的. 非常疑惑,查了一下资料,原来和存储引擎有关.官方说明: The number of rows. Some storage engines, such as MyISAM, store the exact count. For other storage engines, such as InnoDB

简单按日期查询mysql某张表中的记录数

测试表表结构:mysql> show create table dr_stats\G 1. row Table: dr_stats Create Table: CREATE TABLE `dr_stats` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `views` int(10) NOT NULL DEFAULT '0' COMMENT '展示量', `num` mediumint(8) NOT NULL DEFAULT '0' CO

MySQL按时间统计每个小时记录数

MySQL按时间统计每个小时记录数 方案1: ? 1 2 3 4 5 6 7 SELECT  @rownum := @rownum + 1 AS ID,         CONCAT((CASE WHEN t.hour = 24 THEN 0 ELSE t.hour END),':00:00') AS TIME, COUNT(*) AS COUNT FROM (SELECT id, HOUR(DATE_FORMAT(createtime,'%H:%i:%s'))+1 AS HOUR FROM b

MySQL 元数据:获取查询语句影响的记录数

MySQL 元数据 你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等. 在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息. 但如果使用Perl或PHP等脚本语言,你就需要调用特定的接口函数来获取. 接下来我们会详细介绍. 获取查询语句影响的记录数 PERL 实例 在 DBI 脚本中, 语句影响

mysql中左连接后,最终的记录数大于左边表的记录分析

如果B表符合条件的记录数大于1条,就会出现1:n的情况,这样left join后的结果,记录数会多于A表的记录数. 例如:member与member_login_log表的结构如下,member记录会员信息,member_login_log记录会员每日的登入记录.member表的id与member_login_log表的uid是对应关系. member 表 member_login_log 表 查询member用户的资料及最后登入日期:如果直接使用left join select a.id, a