--问题求 集合中每天最大时间的总和

  表中的数据

列: 用户     分数        时间
A 2 2014-01-01 01:00:00
A 2 2014-01-01 02:00:00
A 2 2014-01-01 03:00:00
A 2 2014-01-02 01:00:00
A 2 2014-01-02 02:00:00
A 2 2014-01-02 03:00:00
A 2 2014-01-03 02:00:00
A 2 2014-01-03 03:00:00
A 2 2014-01-04 01:00:00
A 2 2014-01-05 01:00:00
A 2 2014-01-06 01:00:00
A 2 2014-01-06 02:00:00

  怎么得到每天最大时间的那条数据,最后的结果要为:  

列:  用户     分数       时间
A 2 2014-01-01 03:00:00
A 2 2014-01-02 03:00:00
A 2 2014-01-03 03:00:00
A 2 2014-01-04 01:00:00
A 2 2014-01-05 01:00:00
A 2 2014-01-06 02:00:00

  然后再对这个结果进行用户的分组,求分数的总和。
  得到的最终结果为:
  A  12

DECLARE @table TABLE
(
[id] INT PRIMARY KEY IDENTITY(1, 1) NOT NULL ,
[name] VARCHAR(30) NOT NULL ,
[record] INT NOT NULL ,
[date] DATETIME NOT NULL
)
INSERT INTO @table
SELECT 'A' ,2 ,'2014-01-01 01:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-01 02:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-01 03:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-02 01:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-02 02:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-02 03:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-03 02:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-03 03:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-04 01:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-05 01:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-06 01:00:00' UNION ALL
SELECT 'A' ,2 ,'2014-01-06 02:00:00' SELECT * FROM @table

  排序,为分组做准备,partition分区 插入行号,并按照时间排序

WITH    q AS ( SELECT   [name] ,[record] ,[date] ,
ROW_NUMBER() OVER ( PARTITION BY CAST(date AS DATE) ORDER BY [date] DESC ) AS rownum
FROM @table
)
SELECT * FROM q

  取得一天中最大的记录

SELECT  * FROM    q WHERE rownum = 1

  求和

SELECT  name,SUM(record) AS 'totolrecord'
FROM q
GROUP BY rownum ,name
HAVING rownum = 1

原题:http://bbs.csdn.net/topics/390697419

--我的理解题意错误解答,数据也私自更改了为的是更好的区分
DECLARE @table TABLE
(
[id] INT PRIMARY KEY
IDENTITY(1, 1)
NOT NULL ,
[name] VARCHAR(30) NOT NULL , [record] INT NOT NULL ,
[date] DATETIME NOT NULL
)
INSERT INTO @table( name, record, date )VALUES ( 'A', 1, '2014-01-01 01:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-01 02:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 3, '2014-01-01 03:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-02 01:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-02 02:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-02 03:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-03 02:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-03 03:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-04 01:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-05 01:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-06 01:00:00' )
INSERT INTO @table( name, record, date )VALUES ( 'A', 2, '2014-01-06 02:00:00' )


按照分组,查询最大的record记录

SELECT MAX(record),YEAR([date]) FROM @table GROUP BY YEAR([date])

按照年月日分组,取每日中最大的record记录

SELECT  [name] AS Name ,MAX(record) AS MaxRecord ,CAST([date] AS DATE) AS Date
FROM @table
GROUP BY Name ,CAST([date] AS DATE)

SQL_求集合中每天最大时间记录的总和的更多相关文章

  1. JAVA求集合中的组合

    好几个月没弄代码了,今天弄个求组合的DEMO 思路是将集合的每个值对照一个索引,索引大小是集合的大小+2.索引默认为[000...000],当组合后选取的组合值demo为[0100..00].然后根据 ...

  2. C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;

    ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口:       2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...

  3. Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制

    1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...

  4. map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法

    package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...

  5. 【转载】C#中使用Average方法对List集合中相应元素求平均值

    在C#的List集合操作中,有时候需要对List集合元素进行汇总求平均值,如数值类型的List集合元素,有时候对象类型的List集合也需要对集合中的元素的某个对象进行汇总求平均值,此时都可以使用到Av ...

  6. Day_11【集合】扩展案例5_对list集合对象中的元素进行反转,求最大值最小值,求元素i在list集合中首次出现的索引,将oldvalue替换为newvalue

    分析以下需求,并用代码实现 定义MyArrays工具类,该工具类中有以下方法,方法描述如下: 1.public static void reverse(ArrayList<Integer> ...

  7. (BUG记录)使用迭代器安全的删除处于循环下集合中的元素

    今日在写一个功能时,需要从MQ拿取数据集合调用对端系统进行批量处理,为了幂等支持,在循环内部如果不满足调用条件就直接从集合中移除. 以上是一个典型的循环集合内删除的场景任务,工作一年第一次遇到这个场景 ...

  8. 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token

    为什么你学不会递归?告别递归,谈谈我的一些经验   可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...

  9. 用Scala实现集合中相邻元素间的差值

    欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...

随机推荐

  1. Spring Boot使用JavaMailSender发送邮件

    http://www.cnblogs.com/wxc-xiaohuang/p/9532631.html https://blog.csdn.net/icannotdebug/article/detai ...

  2. Mongodb配置:error:10061 由于目标计算机积极拒绝,无法连接

    相信很多学Node的同学,在进入MongoDB后台管理 Shell的时候都会“遇到error:10061 由于目标计算机积极拒绝,无法连接”这种情况,很多情况都是dbpath与dblog的路径没有配置 ...

  3. Asp.Net Core2.0允许跨域请求设置

    1.services /// <summary> /// /// </summary> /// <param name="services">& ...

  4. mysql关联表插入-php环境中

    $insertsql=<<<EOTinsert into tb_manager values(null,'$name','$pwd','1');select @pid:=last_i ...

  5. [CodeForces-606E] Freelancer's Dreams 凸包 模型转换

    大致题意: 有一个人想要获得p个经验点和q元钱.现在给出n份工作,每份工作每天能得到Ai的经验值和Bi的钱,问最少需要工作多少天, 能使得总经验值>=p,总钱>=q. 先对给出的n份工作以 ...

  6. python opencv3 视频文件的读写

    git: https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 读取视频文件 ...

  7. Django框架(一)-Django初识

    Django初识 一.Web框架本质—自己实现Web框架 1.所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端 import socket sk = sock ...

  8. centOS7.4服务器 yum安装 搭建lamp环境

    // 红色加粗是linux命令 安装gcc和gcc-c++ yum -y install gcc gcc-c++ yum list httpd* 安装apche yum -y install http ...

  9. BZOJ 3483 SGU505 Prefixes and suffixes(字典树+可持久化线段树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3483 [题目大意] 给出一些串,同时给出m对前缀后缀,询问有多少串满足给出的前缀后缀模 ...

  10. HDU 6194 string string string(后缀自动机)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3238 [题目大意] 给出一个字符串求其出现恰好k次的子串数量 [题解] 对串建立AC自 ...