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 ...
随机推荐
- 汕头市队赛 SRM 08 B
B-3 SRM 08 描述 给长度为 n 的数列 A 和长度为 m 的数列 B,问有多少长度为 m 的数列 C 满足 输入格式 第一行俩整数 n 和 m 第二行 n 个整数 ,表示数列 A 第三行 m ...
- 支持 XML 序列化的 Dictionary
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- android hook 框架 ADBI 简介、编译、运行
Android so注入-libinject2 简介.编译.运行 Android so注入-libinject2 如何实现so注入 Android so注入-Libinject 如何实现so注入 A ...
- UVALIVE 3571 Visible Lattice Points
就欧拉函数然后地推一下. #include <map> #include <set> #include <list> #include <cmath> ...
- linux 内核库函数 【转】
转自:http://blog.chinaunix.net/uid-20321537-id-1966892.html 当编写驱动程序时,一般情况下不能使用C标准库的函数.Linux内核也提供了与标准库函 ...
- 我和阿里云RDS的故事
于阿里云的RDS性能无法满足我们公司系统的要求,数据库偶尔出现莫名的查询慢(索引等做了全面优化)经过好多次投诉,情况还是没有改善.由于是类金融的系统,对这种情况是不能接受的.相信系统数据有5G以上有人 ...
- java的unity单元测试
import org.junit.After; import org.junit.Before; import org.junit.Test; public class TestUnit { publ ...
- maven 在 mac中的配置
思前想后,还是在mac中把maven配置一下吧. 1.下载安装包,由于公司用的版本比较低,考虑到兼容性,建议用低版本的.我用3.0.5 下载地址:http://archive.apache.org/d ...
- 请教一下16aspx上的源代码要如何在自己的服务器上运行
很正常呀,,我下载的也有运行不成功的你要去他们16aspx论坛发帖子问这里很少有人回答你这样的问题
- Python Unittest与数据驱动
python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html ...