group by和 选择前几个的select语句
2017-08-11 12:53
260 查看
group by
1.后面添加的若干属性,共同组成了一个分组的依据,2.count(*),或者max(age)这类函数,都将计算分组内的数据
3.where字句和having子句
where将对分组前的所有数据进行筛选。如果想要记录50岁的女的数量,应该在where中加条件,而不是having中。
having将对分组后的一组数据搞事情,而且group by age后,一组50岁的数据只显示一条,也就是一群50岁的人,有男有女,但是最后只显示一种sex(假设显示了女),这时候如果having后面是对这色系别进行过滤,having sex=male的话,将过滤掉50岁的所有记录。带来错误。
4.也就是说group by后面的其它属性可能不是你想要的。比如说group by时候select max(age),sex。这时候sex得到的值,可能并不是年龄最大的选手的性别。
select *,count(*)
from user group by sex,age
查找每个人消费最高的一天的花费和日期:选出每个user消费最多的金额
表结构: user(userid, name, age) ,consume(id, userid, money, timer)select user.name,consume.money,consume.consume_time
from user
inner join (
select consume.useid,max(money) money
from consume
group by consume.useid
) a
inner join consume
on user.useid=consume.useid and
user.useid=a.useid and
consume.money=a.money
group by name;
每个用户消费最多的两天:给每张消费表,另外添加一个消费金额排名,最后排名过滤
select user.name, ccc.money,ccc.consume_timefrom user
, (select c1.useid,c1.consume_time,c1.money,
(select count(id)
from consume c2
where c1.useid=c2.useid
and c1.money<=c2.money
) cnt
from consume c1
)ccc
where user.useid=ccc.useid
and ccc.cnt <=2;
;
相关文章推荐
- 两个包含group by 语句的select 语句的连接查询
- MYSQL数据库(十)- 数据表的插入(insert)、删(delete)、改(update)、查(select)、group by 分组、having语句设置分组条件,order by查询结果排序,
- SQL中Group By, Having, Where, Order by几个语句的执行顺序
- 【SQL心得】:在含有GROUP BY的SELECT语句中如何显示COUNT()为0的结果
- 显示刚刚添加的最后一条数据,access,选择语句,select
- SQL心得:在含有GROUP BY的SELECT语句中显示COUNT()为0的结果
- 【C语言连载二】--------选择结构、循环结构、跳转语句(附几个例子)
- 含有GROUP BY子句的查询中如何显示COUNT()为0的结果( SELECT语句完整的执行顺序)
- 在含有group by的select语句中获取count()==0的数据
- 数据库_MySQL_SQL语句的组装顺序 和 GROUP BY的SELECT语句中显示COUNT()为0的结果
- HQL语句--select(选择)
- select+case选择语句
- MySQL中在含有GROUP BY的SELECT语句中显示COUNT()为0的结果
- [SQL]把几个select语句的结果集合到一起输出
- select group by语句
- 【SQL】在含有GROUP BY的SELECT语句中如何显示COUNT()为0的结果
- 关于sql视图--定义视图的查询不能包含order by子句,除非在select 语句的选择列表中还有top子句---问题解决
- join和on语句中select语句选择公共列的区别
- 用SELECT... INTO OUTFILE语句导出MySQL数据的教程
- select语句后以for update结尾