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.CLASS
FROM (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中,先分组,按某个字段计数,然后把计算出的数求和,怎么写,的主要内容,如果未能解决你的问题,请参考以下文章

mysql 计数,然后按该计数分组

mysql根据某个字段内容排序

mysql按字段分组并获取每个分组按照某个字段排序的前三条

mysql 查询时 按照某个字段计算后的值 排序?

数据框:如何在 Scala 中分组/计数然后按计数排序

Mysql按字段分组取最大值记录