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单表数据不要 ...
随机推荐
- lr如何获取当前系统时间戳
lr如何获取当前系统时间戳 一般使用time函数,获取当前unix时间戳 lr程序如下: int t1; char a[20]; t1=time();//获取当前系统时间 //根据不同情况,将时间存储 ...
- 升级openssh基于openssl
OpenSSH is the premier connectivity tool for remote login with the SSH protocol. It encrypts all tra ...
- samba温故知新
SAMBA服务器可以实现Windows主机和Linux主机共享资源互访的功能,即在Windows下可以通过网上邻居访问Linux操作系统中SAMBA服务器共享的文件夹,当然,Linux操作系统之间同样 ...
- skimage exposure模块解读
exposure模块包括: 直方图均衡化 gamma调整.sigmoid调整.log调整 判断图像是否对比度太低 exposure模块包括以下函数: histogram 统计颜色的直方图,基于nump ...
- 【LeetCode】88. Merge Sorted Array (2 solutions)
Merge Sorted Array Given two sorted integer arrays A and B, merge B into A as one sorted array. Note ...
- invalid configuration x86_64-unknown-linux-gnu' machine x86_64-unknown' not recognized
转载自:http://blog.csdn.net/php_boy/article/details/7382998 前两天在装机器软件的时候, 出现了下面的错误, invalid configurati ...
- UltraEdit打开中文乱码
http://hellofs.blog.51cto.com/6109153/1187548 UltraEdit很强大,但是今天发现在打开含有中文的文本时会乱码,还是在配置里找找相关的设置,可以在如图的 ...
- How to develop and deploy ActiveX control in C#
Link:https://blogs.msdn.microsoft.com/asiatech/2011/12/05/how-to-develop-and-deploy-activex-control- ...
- 2.Java基础:方法定义和调用
一.方法的定义 1.类的方法代表的是实力的某种行为(或功能) 方法的定义:方法类型 . 方法签名 . 方法体 2.定义类的方法 访问修饰符 类型 方法名(参数列表){ ///方法体 } 3.把方法当作 ...
- python matplotlib.pyplot画矩形图 以及plt.gca()
plt的Rectangle参数: 第一个参数是坐标(x,y),即矩形的画图的起点坐标,这个起点坐标不是一味地从左下角开始画,而是对应整个图中坐标原点,即(0,0). 第二个参数是矩形宽度 第三个坐标是 ...