mysql 的一点点记录
以后再来整理。
-- 查询一个学校的报修单数
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 的一点点记录的更多相关文章
- MYSQL删除表的记录后如何使ID从1开始
MYSQL删除表的记录后如何使ID从1开始 MYSQL删除表的记录后如何使ID从1开始 http://hi.baidu.com/289766516/blog/item/a3f85500556e2c09 ...
- mysql防止重复插入记录方法总结
mysql防止重复插入记录方法总结 防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. ...
- navicat MySQL 只有1000条记录
/*************************************************************************** * navicat MySQL 只有1000条 ...
- mysql 查询一条记录的下一条和上一条记录
如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): select * from tab ...
- mysql中删除重复记录,只保留一条
表结构如下: mysql> desc test1; +--------------+------------------+------+-----+---------+------------- ...
- 【mysql】索引优化记录
基础知识 Innodb存储引擎 支持行锁 支持事务: Myisam存储引擎 只支持表锁: 不支持事务: 常见索引列表 独立的列 前缀索引(索引选择性) 多列索引(并不是多个单列索引,索引顺序很重要) ...
- mysql 删除表中记录
一.清除mysql表中数据 delete from 表名;truncate table 表名;不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以 ...
- MySQL Limit 限定查询记录数
MySQL Limit 限定查询记录数 MySQL LIMIT MySQL 中 LIMIT 关键字用于限定查询记录返回最大数目. 语法: ... LIMIT offset , rows 该语法中,of ...
- MySQL单表最大记录数不能超过多少?
MySQL单表最大记录数不能超过多少? 很多人困惑这个问题.其实,MySQL本身并没有对单表最大记录数进行限制,这个数值取决于你的操作系统对单个文件的限制本身. 从性能角度来讲,MySQL单表数据不要 ...
随机推荐
- python第三方包的windows安装文件exe格式
今天弄了一上午的python-ldap,发现要么安装vc,要么用其他比较麻烦的方法,都比较麻烦.幸好找到这个地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/ ...
- Android仿掌上英雄联盟首页,实现折叠效果
概述 仿掌上英雄联盟首页的demo 详细 代码下载:http://www.demodashi.com/demo/10695.html 首页大概分为几个部分 状态栏 标题栏 轮播图 切换的Tab 资讯列 ...
- 【转载】加密Spring加载的Properties文件
目标:要加密spring的jdbc配置文件的密码口令. 实现思路:重写加载器的方法,做到偷梁换柱,在真正使用配置之前完成解密. 1.扩展 package com.rail.comm; import j ...
- 机器学习性能度量指标:AUC
在IJCAI 于2015年举办的竞赛:Repeat Buyers Prediction Competition 中, 很多参赛队伍在最终的Slides展示中都表示使用了 AUC 作为评估指标: ...
- Error_GL_KeyflexfieldDefinitionFactory.getStructureNumber无法找到应用产品
2014-07-12 BaoXinjian
- android语音识别技术
今天从网上找了个例子实现了语音识别,个人感觉挺好玩的,就把代码贴出来与大家分享下: Android中主要通过RecognizerIntent来实现语音识别,其实代码比较简单,但是如果找不到设置,就 ...
- Python rindex() 方法
描述 Python rindex() 方法返回子字符串最后一次出现在字符串中的索引位置,该方法与rfind() 方法一样,只不过如果子字符串不在字符串中会报一个异常. 语法 rindex() 方法语法 ...
- shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面
resource_dir=/tmp/jobs20170711/jobs/*/config.xmltarget_dir=/tmp/jobs20170711/bakefilelist=`ls $resou ...
- cocos2dx 3.x designResolutionSize须主动设置
cocos2dx 3.x最初设置screenSize和designResolutionSize的地方如下: bool AppDelegate::applicationDidFinishLaunchin ...
- TCP通信的三次握手和四次撒手的详细流程(顿悟)
TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位 ...