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

  表中的数据

列: 用户     分数        时间
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. day6 shelve模块

        shelve模块 shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式,shelve模块是对pickle模块的补充.我们知道 ...

  2. python实现获取系统版本和mac信息上传到指定接口

    import os,platform,uuid,urllib.parse,urllib.request,json def BeforeSystemRequests(): ''' the systemi ...

  3. HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)

    HBase结合MapReduce批量导入 package hbase; import java.text.SimpleDateFormat; import java.util.Date; import ...

  4. 8-2 Building for UN Uva1605

    题意:你的任务是设计一个包含若干层的联合国大楼,其中每层都是一个等大的网络 由若干个国家需要在联合国大楼里面办公 你需要把每个格子分配给一个国家 使得任意两个不同的国家都有一对相邻的格子  (要没是同 ...

  5. mysql proxy代理安装和配置

    mysql proxy代理安装和配置 服务器说明: 192.168.1.219   mysql主库(主从复制) 192.168.1.177   mysql从库(主从复制) 192.168.1.202 ...

  6. react篇章-React State(状态)-将生命周期方法添加到类中

    将生命周期方法添加到类中 在具有许多组件的应用程序中,在销毁时释放组件所占用的资源非常重要. 每当 Clock 组件第一次加载到 DOM 中的时候,我们都想生成定时器,这在 React 中被称为挂载. ...

  7. 使用Mongo索引需要注意的几个点

    1.正则表达式和取反运算符不适合建立索引 正则表达式:$regex 取反运算符:$ne ,$nin 2.backgroud建立索引速度缓慢 前台创建是会有阻塞,backgroud效率缓慢,实际情况实际 ...

  8. UNP学习总结(二)

    本文是UNP复习系列的第二篇,主要包括了以下几个内容 UNIX系统下5种I/O模型 阻塞.非阻塞,同步.异步 epoll函数用例 一.Unix下的五种可用I/O模型 阻塞式I/O模型 阻塞式I/O是最 ...

  9. requests爬取百度音乐

    使用requests爬取百度音乐,我想把当前热门歌手的音乐信息爬下来. 首先进行url分析,可以看到: 歌手网页: 薛之谦网页: 可以看到,似乎这些路劲的获取一切都很顺利,然后可以写代码: # -*- ...

  10. BZOJ 2726: [SDOI2012]任务安排 [斜率优化DP 二分 提前计算代价]

    2726: [SDOI2012]任务安排 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 868  Solved: 236[Submit][Status ...