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 ...
随机推荐
- Windows.Forms Panel 动态加载用户控件 UserControl
创建好一个Windows Forms程序,在创建好的程序中Form1添加一个Panel控件 如图:
- 俄罗斯方块(NOIP模拟赛)(水·模拟)
真是一道神奇的题目233~ 原题传送门 迫不得已贴了个题解的链接.. 好吧,这道题就是分情况讨论,纯模拟,, 没有什么难的.. 脑洞要大,四面都要考虑,不能漏! #include<iostrea ...
- (计数器)NOIP模拟赛(神奇的数位DP题。。)
没有原题传送门.. 手打原题QAQ [问题描述] 一本书的页数为N,页码从1开始编起,请你求出全部页码中,用了多少个0,1,2,…,9.其中—个页码不含多余的0,如N=1234时第5页不是00 ...
- 转 DNS原理及其解析过程【精彩剖析】
DNS原理及其解析过程[精彩剖析] http://369369.blog.51cto.com/319630/812889/ DNS原理及其解析过程 精彩剖析 网络通讯大部分是基于T ...
- EditText双光标问题
模拟器会出现中双的光标 从没有字符开始输入多了一个竖线怎么回事?光标丢失就好了,下面是手机情况 修改样式更换一个样式试试看:比如我以前的是 android:theme="@android ...
- hdu 5124(区间更新+单点求值+离散化)
lines Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Nginx虚拟主机(Virtual Host)配置
虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机.nginx的虚拟主机配置其实也挺简单,为了使得配置文 ...
- 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】
链接:https://www.nowcoder.com/acm/contest/121/J来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的小 ...
- POJ 3080-Blue Jeans【kmp,字符串剪接】
Blue Jeans Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20695 Accepted: 9167 Descr ...
- 多层代理获取用户真实IP
1. 几个概念remote_addr:如果中间没有代理,这个就是客户端的真实IP,如果有代理,这就是上层代理的IP.X-Forwarded-For:一个HTTP扩展头,格式为 X-Forwarded- ...