mysql中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,相关的知识,希望对你有一定的参考价值。
select count(distinct(da1.studentno)) from dcs_attendance da1 group by FROM_UNIXTIME(da1.inserttime,'%Y%m%d'),这样的出来的是一列,2,34,56.。。。。,怎么把这些数再求和
1、创建一张表,同时插入数据。
2、按照价格排序.select * from 表名 order by 字段名 [升序|降序]。
3、按照class分组(group by),数据会分成三类,肉类、蔬菜类、水果类。
4、按照class分组后在对结果做一个处理,统计三个类总钱数分别是多少。这里sum是mysql提供的内置函数(聚合函数),统计合的。
5、分组了之后可以通过聚合函数可以做一系列的查询操作,查询每个类中有多少个。
6、分组后面跟having做过滤。
参考技术A 求和很简单呀,套一层sql语句就可以了,中间是你的sql语句,取出来的字段最好起个别名(这里用val),临时的那个结果也给起个别名(这里用t):select sum ( t.val ) from
(
select count(distinct(da1.studentno)) as val from dcs_attendance da1 group by FROM_UNIXTIME(da1.inserttime,'%Y%m%d')
) t
至于你还要做其他的,得看其他的数据关系了,现有的信息没法做。
sql 怎么先分组再查询每组中前三天数据?
字段:StudentName , Score , Class 分别为学生姓名,分数,班级 要求查询出每个班级成绩前三的3个人最后按班级排序显示出数据。
SELECT TEST1.STUDENTNAME, TEST1.SCORE, TEST1.CLASSFROM (SELECT STUDENTNAME,
SCORE,
CLASS,
ROW_NUMBER() OVER(PARTITION BY CLASS ORDER BY CLASS, SCORE DESC) ROW_NUM
FROM TABLE_NAME) TEST1
WHERE TEST1.ROW_NUM <= 3
ORDER BY TEST1.CLASS, TEST1.STUDENTNAME
看看是不是你要的,这用到了分组排序编号 参考技术A 有一种比较中规中矩的办法:
先把班级列表插入一张临时表:
select distinct(Class) from table into #abc
用游标循环这张临时表,把每个班级成绩前三的人取出来,插入另外一张临时表:
insert into #result select top 3 * from table where class = @class order by Score desc
最后把#result表select出来
看楼下有没有更简便的办法,可以不用游标 参考技术B mark ,同学习
以上是关于mysql中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,的主要内容,如果未能解决你的问题,请参考以下文章