MYSQL 巧用count,sum进行统计数据
2015-11-10 08:59
633 查看
SELECT a.user,count(b.order_id) as subcount,sum(if(b.verifysta='Y',1,0)) as passcount FROM vicidial_users a LEFT JOIN vicidial_order b on a.user = b.user WHERE a.user_group = 'TeamOne' GROUP BY a.user;
sum(if(b.verifysta='Y',1,0))
如果verifysta为Y,就加1,否则为0,
这个太棒了。
把逻辑放到sql中,会大大的减少程序的工作量,而且效率很高。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110085747556-2112868623.png)
这样既能获取到全部的订单提交,也能获取审核通过的订单提交。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110093918415-52689177.png)
根据日期筛选,先筛选出order数据(where条件都在其中),如果where放在外面的话,就会把数据过滤掉了。
拆分开来如下:
根据条件,获取所有的存在的数据。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110094404681-1793501179.png)
获取全部的数据,不进行count、sum、group by 处理。
sum(if(b.verifysta='Y',1,0))
如果verifysta为Y,就加1,否则为0,
这个太棒了。
把逻辑放到sql中,会大大的减少程序的工作量,而且效率很高。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110085747556-2112868623.png)
这样既能获取到全部的订单提交,也能获取审核通过的订单提交。
select a.user,a.full_name,count(b.order_id) as subcount,sum(if(b.verifysta='Y',1,0)) as passcount from vicidial_users a LEFT JOIN (SELECT user,order_id,verifysta from vicidial_order where time>UNIX_TIMESTAMP('2015-11-7') and time<UNIX_TIMESTAMP('2015-11-7 23:59:59') and user_group = 'TeamOne') b on a.user = b.user WHERE a.user_group = 'TeamOne' GROUP BY a.user;
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110093918415-52689177.png)
根据日期筛选,先筛选出order数据(where条件都在其中),如果where放在外面的话,就会把数据过滤掉了。
拆分开来如下:
SELECT user,order_id,verifysta from vicidial_order where time>UNIX_TIMESTAMP('2015-11-7') and time<UNIX_TIMESTAMP('2015-11-7 23:59:59') and user_group = 'TeamOne';
根据条件,获取所有的存在的数据。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110094404681-1793501179.png)
select a.user,a.full_name,b.order_id,b.verifysta='Y' from vicidial_users a LEFT JOIN (SELECT user,order_id,verifysta from vicidial_order where time>UNIX_TIMESTAMP('2015-11-7') and time<UNIX_TIMESTAMP('2015-11-7 23:59:59') and user_group = 'TeamOne') b on a.user = b.user WHERE a.user_group = 'TeamOne';
获取全部的数据,不进行count、sum、group by 处理。
![](http://images2015.cnblogs.com/blog/422101/201511/422101-20151110094413025-913735876.png)
相关文章推荐
- MySQL数据库重启后乱码
- 解决Mysql服务器启动时报错问题的方法
- mysql配置
- 如何安装mysql ----官网下载的mysql5.7 没有data目录
- MySQL的安装(msi和zip格式)
- 解决Mysql服务器启动时报错问题的方法
- MySql命令实例汇总
- 磁盘空间满了之后MySQL会怎样
- Ubuntu MySQL设置开机启动
- MySQL 版本后面 -log的含义
- MySQL数据库删除后的恢复工作
- navicat无法连接mysql问题
- 新版MySql 5.6.20 for win32,安装后空密码不能登陆
- mysql数据库常用命令
- 超简单的MySQL主从复制
- mysqld 多线程 用pstree -p 显示
- MYSQL explain详解
- 【mysql】索引的优化
- mysql文件导入到数据库load data infile into table 的使用例子
- mysql/mairadb双主复制