数据库Group By类型语句统计记录条数

最近做一个分页查询查询的数据采用了group by来完成数据的查询处理,需要统计分组后的数据总数发现count(*)

聚集函数无法直接统计出分组后的总记录数。

查询SQL:

SELECT
    count(*)
FROM
    employeeexam,
    exam
WHERE
    exam.examId = employeeexam.examId
    AND exam.`status`="已结束"
GROUP BY
    employeeexam.examId,
    employeeexam.unitid

查询结果:

采用DISTINCT来实现对数据的统计

SELECT
COUNT(DISTINCT employeeexam.examId,
    employeeexam.unitid)
FROM
    employeeexam,
    exam
where
    exam.examId = employeeexam.examId AND
    exam.`status` = "已结束"

查询结果

原文地址:https://www.cnblogs.com/leilong/p/8313444.html

时间: 2024-10-11 18:50:15

数据库Group By类型语句统计记录条数的相关文章

MySQL 分组后,统计记录条数

分组后,统计记录条数: SELECT num,count(*) AS counts from test_a GROUP BY num; 查询结果如下: 对num去重后的数量的统计: SELECT count(t.counts) FROM ( SELECT num,count(*) AS counts from test_a GROUP BY num ) AS t; SELECT count(DISTINCT num) AS count FROM test_a; 它俩结果一样,都是5:只是一个是子

MySQL 分组之后如何统计记录条数 gourp by 之后的 count()

SELECT count(*) FROM 表名 WHERE 条件 // 这样查出来的是总记录条 SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数. 如何获得 第二个sql语句的总记录条数? 则是,如下: select count(*) from(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ; 注意: 子查询方式,MySQL中子结果集必须使用别名,而Oracle中不需要特

页签类型按钮上面记录条数获得

这里是销售订单记录条数固定格式(self, cr, uid, ids, field_name, arg, context=None):def _sales_count(self, cr, uid, ids, field_name, arg, context=None): res = dict.fromkeys(ids, 0) try: sale_order_obj=self.pool.get('sale.order') 获取该表 sale.order sale_ids=sale_order_ob

mysql 分组之后统计记录条数

select count(*) from 表名 group by id 得到的结果如下 你会很神奇的发现你获取的不是总条数,而是每个组的条数,这很有作用,但是如果你要获取总条数的话就会很麻烦 select count(*)from( select count(*) from 表名 group by id ) a   得到的结果是:

数据库优化之SQL语句优化-记录

1. 操作符优化 (a) IN 操作符 从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询.由此可见用IN的SQL至少多了一个转换的过程.一般的SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了. 推荐方案:在业务密集的SQL当中尽量不采用IN操作符,用EXISTS 方案代替. (b) NOT IN操作符 不能应用

C#操作数据库,将其查查出来的记录条数显示在winform窗体中的方法之一

1 //1.数据库链接的基本操作(略) 2 //2.创建对象函数(关键部分) 3 sqlConn.Open(); 4 //初始化定义记录条数 5 int n = 0; 6 object obj = sqlComm.ExecuteScalar();//创建对象(ExecuteScalar()函数是获取所查的记录中的第一行第一列数据.) 7 int.TryParse(obj.ToString(), out n);//获取所查询的记录条数 8 string a = n.ToString();//将记录

关于ADO记录集GetRecordCount()返回记录条数-1的问题

ADO方式操作数据库我们通常使用GetRecordCount函数来快速判断一个打开的记录集里面总共有多少条记录,但在使用中有时却发现有时可能查不到任何的数据,跟踪发现GetRecordCount()返回值变成了-1,而且记录集里也有记录存在. 一般情况下当ADO不能确定记录条数,或者连接提供者.游标类型都不支持RecordCount的时候,RecordCount属性都将返回-1. 最常用的两个游标类型是: adUseClient 使用由本地游标库提供的客户端游标.本地游标引擎通常允许使用的许多功

datastage 分析日志获取表记录条数

DataStage通过分析日志获取Job插入目标表的记录数 这只是一种不太好的方法,也许还有更好.更简便的方法.这种方法要求每次运行Job之前删除已有的日志信息,否则无法统计出正确的记录数.当然,在Job跑完之后,可以在shell备份本次Job运行的日志到服务器磁盘. 1       日志清理设置 登录Datastage Administrator,选择对应项目,项目属性->记录,勾选"自动清除作业日志",设置为自动清理上次及以前的日志. Figure 1 Administrat

android 通话记录条数的限制

在frameworks\base\core\java\android\provider下面有CallLog.java,这支文件里,每当完成一通电话向call表中插入一条callLog记录后,调用removeExpiredEntries这个函数将超过500条的那条记录 如果要对其限制条件进行修改的话,可以对这个函数进行 E.g:根据不同类型的通话记录对其进行限制,步骤如下: 1.首先对函数添加一个callType的参数(INCOMING_TYPE = 1; OUTGOING_TYPE = 2; M