以后再来整理。

-- 查询一个学校的报修单数
SELECT
s.id AS schoolId , -- 学校ID
COUNT(i.id) as cntId, -- 报修单数
IFNULL(t1.nohandlecnt,0) AS nohandlecnt,
IFNULL(t2.overcnt,0) AS overcnt,
ROUND(overcnt * 100 /COUNT(i.id),1) AS okRate
FROM
`t_issue` i
LEFT JOIN (
-- 完成报修单数
SELECT
s.id AS schoolId , -- 学校ID
IFNULL(COUNT(i.id),0) as overcnt -- 完成的报修单数
FROM
`t_issue` i
INNER JOIN t_school s ON i.school_id = s.id
WHERE i.completed_on IS NOT NULL and
i.acknowledged_on IS NOT NULL
GROUP BY
i.school_id
) t2 ON t2.schoolId = i.school_id
LEFT JOIN (
-- 未处理数
SELECT
s.id AS schoolId , -- 学校ID
IFNULL(COUNT(i.id),0) as nohandlecnt -- 未处理报修单数 FROM
`t_issue` i
INNER JOIN t_school s ON i.school_id = s.id
WHERE
i.acknowledged_on IS NULL AND
i.completed_on IS NULL GROUP BY
i.school_id
) t1 ON t1.schoolId = i.school_id
INNER JOIN t_school s ON i.school_id = s.id
GROUP BY
i.school_id

另一种保留小数的方法。

SELECT
TRUNCATE (avg(attitude), ) AS attitude,
TRUNCATE (avg(timeliness), ) AS timeliness,
TRUNCATE (avg(professionality), ) AS professionality,
TRUNCATE (avg(overall), ) AS overall
FROM (
SELECT
school_id,s.sc_name,
TRUNCATE (avg(attitude),) as attitude ,
TRUNCATE (avg(timeliness), ) as timeliness,
TRUNCATE (avg(professionality), ) as professionality,
TRUNCATE (avg(overall), ) as overall
FROM (
SELECT
t_repairmen.school_id ,
TRUNCATE (avg(attitude),) AS attitude,
TRUNCATE (avg(timeliness),) AS timeliness,
TRUNCATE (avg(professionality),) AS professionality ,
TRUNCATE (
(
avg(attitude) + avg(timeliness) + avg(professionality)
) / , ) AS overall
FROM `t_issue_rating`
INNER JOIN t_repairmen ON t_repairmen.id = t_issue_rating.repairmen_id
WHERE `is_dummy` = '' GROUP BY
repairmen_id,t_repairmen.school_id ) t
INNER JOIN t_school s ON t.school_id = s.id
WHERE
=
<if test="conditions.schools!=null">
AND school_id in (${conditions.schools})
</if>
GROUP BY school_id
ORDER BY
s.id DESC
) y

当遇到count 和group by 在一起,统计出的结果不正确时。

    SELECT COUNT(DISTINCT id) FROM `xx` WHERE  =   group by id  

两个表的count值相加

select
(select count(*) from bumen)+(select count(*) from mrs) as sum_count

查询用户所在的排名

SELECT
concat(
(
@dddd_row_num :=@dddd_row_num +
) +, ''
) AS row_id
FROM
history,
(SELECT @dddd_row_num := ) AS foo
WHERE
=
order by mp_send_time DESC
limit offset

各种统计count:

可以在统计count 的时候,将不符合条件的数排除在外

count(if( e.ext5 is NOT NULL ,true,null)) erijCount,

SELECT
c.classes_id AS examId,
i.eng_item_name AS examSubject,
c.classes_name AS examName,
eng_apply_start AS registStart,
eng_apply_end AS registEnd,
classes_status AS examStatus,
classes_fee AS examFee,
(
CASE
WHEN i.ext2 IS NOT NULL THEN
i.ext2
ELSE END
) AS examFee1,
A.realityApplyCount * classes_fee AS shouldApplyFee,
A.realityApplyFee,
A.realityApplyCount
FROM
eng_classes c
INNER JOIN eng_item i ON i.eng_id = c.eng_id
LEFT JOIN exam_examinee ON c.classes_id = examinee_exam_id
AND (
examinee_exam_status != ''
OR ISNULL(examinee_exam_status)
)
AND examinee_apply_type = 'english'
LEFT JOIN (
SELECT
classes_id AS Id,
count( IF (
examinee_pay_status = "",
TRUE,
NULL
)
) * classes_fee AS realityApplyFee,
count(DISTINCT examinee_id) realityApplyCount
FROM
eng_classes
INNER JOIN exam_examinee ON classes_id = examinee_exam_id
AND (
examinee_exam_status != ''
OR ISNULL(examinee_exam_status)
)
AND examinee_apply_type = 'english'
GROUP BY
classes_id
) AS A ON classes_id = A.Id
WHERE
=
GROUP BY
classes_id

还有这样一种,sum去叠加,中间加判断的。

SELECT
pro_apply_id AS examId ,
pro_apply_name AS examSubject,
pro_apply_start AS registStart ,
pro_apply_end AS registEnd ,
pro_apply_fee AS examFee ,
A.realityApplyCount * pro_apply_fee as shouldApplyFee,
A.realityApplyFee,
A.realityApplyCount
FROM pro_apply
LEFT JOIN exam_examinee ee ON pro_apply_id = ee.exam_item_id
AND examinee_apply_type = 'profession'
LEFT JOIN (
SELECT
apply_id AS Id ,
SUM(if(examinee_pay_status = "",item_fee,)) AS realityApplyFee ,
count(DISTINCT examinee_id) realityApplyCount
FROM
pro_item
INNER JOIN exam_examinee ee ON item_id = examinee_exam_id
AND (examinee_exam_status != '' OR ISNULL(examinee_exam_status))
AND examinee_apply_type = 'profession'
GROUP BY apply_id
) AS A ON A.Id LIKE CONCAT('%' ,pro_apply_id, '%')

mysql 的一点点记录的更多相关文章

  1. MYSQL删除表的记录后如何使ID从1开始

    MYSQL删除表的记录后如何使ID从1开始 MYSQL删除表的记录后如何使ID从1开始 http://hi.baidu.com/289766516/blog/item/a3f85500556e2c09 ...

  2. mysql防止重复插入记录方法总结

    mysql防止重复插入记录方法总结 防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. ...

  3. navicat MySQL 只有1000条记录

    /*************************************************************************** * navicat MySQL 只有1000条 ...

  4. mysql 查询一条记录的下一条和上一条记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...

  5. mysql中删除重复记录,只保留一条

    表结构如下: mysql> desc test1; +--------------+------------------+------+-----+---------+------------- ...

  6. 【mysql】索引优化记录

    基础知识 Innodb存储引擎 支持行锁 支持事务: Myisam存储引擎 只支持表锁: 不支持事务: 常见索引列表 独立的列 前缀索引(索引选择性) 多列索引(并不是多个单列索引,索引顺序很重要) ...

  7. mysql 删除表中记录

    一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...

  8. MySQL Limit 限定查询记录数

    MySQL Limit 限定查询记录数 MySQL LIMIT MySQL 中 LIMIT 关键字用于限定查询记录返回最大数目. 语法: ... LIMIT offset , rows 该语法中,of ...

  9. MySQL单表最大记录数不能超过多少?

    MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...

随机推荐

  1. JDBC实战案例--利用jdbc实现的宠物信息管理系统

    一.需求: 利用jdbc实现对宠物的信息进行管理的一套系统 宠物信息:宠物ID,宠物类别,宠物名字,宠物性别,宠物年龄,宠物入库日期 系统完成功能:实现对宠物信息的录入,修改,删除,查询. 二.解决方 ...

  2. vsftp限制FTP用户只能访问自己的目录

    修改配置文件/etc/vsftpd/vsftpd.conf chroot_local_user=YESallow_writeable_chroot=YESchroot_list_enable=YESc ...

  3. springmvc之url参数传递

    在学习 Spring Mvc 过程中,有必要来先了解几个关键参数:    @Controller: 在类上注解,则此类将编程一个控制器,在项目启动 Spring 将自动扫描此类,并进行对应URL路由映 ...

  4. SolrCloud之分布式索引及与Zookeeper的集成--转载

    原文地址:http://josh-persistence.iteye.com/blog/2234411 一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库,Solr是以Luc ...

  5. JMeter学习笔记--JMeter常用测试元件

    JMeter测试计划有一个被称为“函数测试模式”的选项,如果被选择,它会使Jmeter记录来自服务器返回的每个取样的数据.如果你在测试监听器中选择一个文件,这个数据将被写入文件.如果你尝试一个较小的测 ...

  6. RHEL7 -- NetworkManager

    RHEL7中默认的网络服务是由NetworkManager提供,NetworkManager可以动态控制和配置网络. 网络工具和应用 应用或工具 描述 NetworkManager 默认的网络守护进程 ...

  7. Android中实现下拉刷新

    需求:项目中的消息列表界面要求实现类似sina微博的下拉刷新: 思路:一般的消息列表为ListView类型,将list加载到adapter中,再将adapter加载到 ListView中,从而实现消息 ...

  8. Android vcard使用示例,生成vcf文件

     Android vcard使用示例,生成vcf文件 我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 ( ...

  9. 在ubuntu16.4中为pycharm创建桌面快捷启动方式

    在ubuntu环境中每次使用pycharm需要到它的安装目录中执行./pycharm.sh来启动pycharm.比较麻烦,既然ubuntu提供了桌面环境我们应该从分利用.哈哈哈... 上干货 我的py ...

  10. jsp指令和重定向

    1 声明指令 格式:<%!声明变量或函数 %> 作用:会生成一个成员变量或成员方法,也可以使用访问修饰符修饰,public,private,protected 2 注释指令 格式:< ...