GROUP BY和HAVING 以及mysql中常用的日期函数
一.mysql中的GROUP BY和HAVING
GROUP BY常见的是和聚合函数(SUM,MIN,MAX,COUNT)搭配使用.
比如:
SELECT category,SUM(money) AS `total` FROM user_money GROUP BY category;
按类别分组统计user_money表每个类别总计有多少money
现在如果增加个条件,需要统计每个类别中支出的money总量,比如rule=1为支出,则改写语句为
SELECT category,SUM(money) AS `total` FROM user_money WHERE rule=1 GROUP BY category;
如果需要统计每个类别支出money总量,并且需要过滤出支出money总量大于500的分组
SELECT category,SUM(money) AS `total` FROM user_money WHERE rule=1 GROUP BY category HAVING `total`>500;
1.WHERE用于对分组前的数据过滤,HAVING用于对分组后的数据进行过滤.
2.使用GROUP BY两个注意点
(1)SELECT中出现的字段,要么是聚合函数,要么在GROUP BY中出现;否则sql语句可以执行,但该字段只是取了分组记录中的第一个记录的该字段值(该值可以使用ORDER BY 改变),没任何意义
(2)使用WHERE过滤分组前的数据,然后使用GROUP BY分组,再使用HAVING过滤分组后的数据;两者后面条件字段都不能出现聚合函数计算后的别名字段
(3)ORDER BY 和 GROUP BY顺序问题
SELECT category,SUM(money) AS `total` FROM user_money ORDER BY id DESC GROUP BY category HAVING `total`>500;
ORDER BY 放在GROUP BY的前面,表示对未分组的结果进行排序(排序字段不能是聚合函数计算后的别名字段)一般没用,反正你最终的目的是聚合计算的
SELECT category,SUM(money) AS `total` FROM user_money DESC GROUP BY category HAVING `total`>500 ORDER BY t DESC;
GROUP BY放在ORDER BY的前面,别是对分组后的结果进行排序,这个时候排序字段一把是聚合函数计算后的别名字段或者是GROUP BY的分组字段.
(4)GROUP BY中的多字段分组
先依据第一字段分组,然后再依据第二字段对上一次分组的结果再次进行分组
二.mysql的有用的日期函数
SELECT NOW() -> 2017-05-20 20:36:49
SELECT CURDATE() -> 2017-05-20
SELECT CURDATE() -> 2017-05-20
SELECT CURRENT_TIME() -> 20:38:37
SELECT UNIX_TIMESTAMP(NOW()) ->1495283945 将日期转为时间戳
GROUP BY和HAVING 以及mysql中常用的日期函数的更多相关文章
- mysql 中时间和日期函数应用
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...
- mysql 中 时间和日期函数
From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日 ...
- mysql中常用的字符串函数
写在分割线之前,个人以为,数据库应该具备简单的的数据加工能力.如同食品在吃之前,是要经过很多到工序的,有经过初加工.粗加工.精加工.深加工等.那么mysql也应该并必须担任起数据初加工以及粗加工的责任 ...
- Mysql中常用的函数汇总
Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回 ...
- mysql中常用的语句整理
mysql中常用的语句: 1:创建带自增长的主键的表 DROP TABLE IF EXISTS user_login ; CREATE TABLE user_login ( user_id INT ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- mysql中bit_count和bit_or函数的含义
翻阅mysql手册时,看到有个示例使用了bit_or方法来去除重复的数据,一开始没看明白,后来看明白之后感觉非常巧妙.示例要实现的功能就是计算每月有几天有访问,先把示例摘录在这里. 1 2 3 4 5 ...
- 【Oracle】Oracle中常用的系统函数
Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果.在Oracle还可以自定义函数,关于更多信息可以查 ...
- mysql中的去除空格函数
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例:update `ne ...
随机推荐
- 编写Shell脚本的最佳实践,规范二
需要养成的习惯如下: 代码有注释 #!/bin/bash # Written by steven # Name: mysqldump.sh # Version: v1.0 # Parameters : ...
- bzoj4104 [Thu Summer Camp 2015]解密运算
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4104 [题解] 脑洞+找规律做出来的.. 我用样例作为说明吧 样例给了我们这个 AAAC.A ...
- sql server创建外键,子母表,级联删除。
级联删除. 最近建一个合同关系,在原有的资产平台上添加维保合同关系,维保合同问题, 需要在后面添加资产的维保合同,使用ef,该添加的冗余字段都已经添加上了,现在做这个,删除的时候只删了主表提示出问题, ...
- Generator函数的语法
简介 Generator函数是ES6关于异步编程的解决方案.Generator函数能够让函数暂停执行(即交出函数的执行权),简单直白点来理解,Generator函数就是一个状态机,内部封装了多个状态( ...
- java基础练习 13
import java.util.Scanner; public class Thirtheen { /*输入某年某月某日,判断这一天是这一年的第几天?*/ public static void ma ...
- flask的orm框架(SQLAlchemy)-操作数据
# 原创,转载请留言联系 Flask-SQLAlchemy 实现增加数据 用 sqlalchemy 添加数据时,一定要注意,不仅仅要连接到数据表,并且你的创建表的类也必须写进来.而且字段和约束条件要吻 ...
- (转)Ubuntu安装g++-4.8
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install g++-4.8 ...
- Doki Doki Literature Club
Doki Doki Literature Club! is a visual novel developed by Team Salvato. The protagonist is invited b ...
- SpringBoot事物管理器
一.springboot整合事物管理 springboot默认集成事物,只主要在方法上加上@Transactional即可 二.SpringBoot分布式事物管理 使用springboot+jta+a ...
- 【 模_板 】 for NOIP 2017
高精度 #include <cstring> #include <cstdio> #define max(a,b) (a>b?a:b) inline void read( ...