一.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中常用的日期函数的更多相关文章

  1. mysql 中时间和日期函数应用

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------------------- ...

  2. mysql 中 时间和日期函数

    From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日 ...

  3. mysql中常用的字符串函数

    写在分割线之前,个人以为,数据库应该具备简单的的数据加工能力.如同食品在吃之前,是要经过很多到工序的,有经过初加工.粗加工.精加工.深加工等.那么mysql也应该并必须担任起数据初加工以及粗加工的责任 ...

  4. Mysql中常用的函数汇总

    Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回 ...

  5. mysql中常用的语句整理

    mysql中常用的语句: 1:创建带自增长的主键的表 DROP TABLE IF EXISTS user_login ; CREATE TABLE user_login (   user_id INT ...

  6. java面试一日一题:mysql中常用的存储引擎有哪些?

    问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...

  7. mysql中bit_count和bit_or函数的含义

    翻阅mysql手册时,看到有个示例使用了bit_or方法来去除重复的数据,一开始没看明白,后来看明白之后感觉非常巧妙.示例要实现的功能就是计算每月有几天有访问,先把示例摘录在这里. 1 2 3 4 5 ...

  8. 【Oracle】Oracle中常用的系统函数

    Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果.在Oracle还可以自定义函数,关于更多信息可以查 ...

  9. mysql中的去除空格函数

    (1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例:update `ne ...

随机推荐

  1. 洛谷P3166 [CQOI2014]数三角形

    题目描述 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形.注意三角形的三点不能共线. 输入输出格式 输入格式: 输入一行,包含两个空格分隔的正整数m和n ...

  2. Python 求最大公因式~辗转相除法

    从错误中学python(4)——最小公约数与辗转相除法 网上看到一篇很简洁辗转相除法的写法:不用判断a,b的大小 def gcp(a, b): while(b%a!=0): a,b=b%a,a ret ...

  3. Cocos2d-x中图字原理之深入分析

    http://cache.baiducontent.com/c?m=9d78d513d9921cfe05ac94281a16a632451294247c89df4f3992d15f9217465c02 ...

  4. 判断dataset是否被修改—DataSet.HasChanges 方法

    DataSet.HasChanges 方法 获取一个值,该值指示 DataSet 是否有更改,包括新增行.已删除的行或已修改的行. 命名空间:   System.Data程序集:  System.Da ...

  5. hdu 5104(数学)

    Primes Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  6. APP专项测试 | 内存及cpu

    命令: adb shell dumpsys meminfo  packagename 关注点: 1.Native/Dalvik 的 Heap 信息 具体在上面的第一行和第二行,它分别给出的是JNI层和 ...

  7. AppScan入门工作原理详解

    AppScan,即 AppScan standard edition.其安装在 Windows 操作系统上,可以对网站等 Web 应用进行自动化的应用安全扫描和测试. Rational AppScan ...

  8. Tarjan缩点【p1726】上白泽慧音

    Description 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村庄作为新的 ...

  9. [Usaco2010 Feb]Chocolate Buying

    题目描述     贝西和其他奶牛们都喜欢巧克力,所以约翰准备买一些送给她们.奶牛巧克力专卖店里 有N种巧克力,每种巧克力的数量都是无限多的.每头奶牛只喜欢一种巧克力,调查显示, 有Ci头奶牛喜欢第i种 ...

  10. THINKPHP nginx设置路由为PATHINFO模式

    首先THINKPHP配置文件中设置 //url访问模式为rewrite模式 'URL_MODEL'=>'2', 然后再在nginx.conf文件中,找到这一条语句 #access_log log ...