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

  表中的数据

列: 用户     分数        时间
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. Linux mint 17.3系统安装及常用开发办公软件部署

    关于为什么选择linuxmint17.3作为个人办公开发系统的选择说明: 编者按]提起Linux系统,大家可能最先想到的就是 Linux Mint 和 Ubuntu 两个版本了.近来,开源界貌似激进了 ...

  2. 002 Jupyter-NoteBook工具介绍(网页版编辑器)

    1.Jupyter-NoteBook位置 在安装完anaconda后,这个工具已经被安装完成. 2.打开 3.功能讲解 目录:C:\Users\dell,这个可以看上面控制台上的信息. 4.其余的功能 ...

  3. MySQL 20个经典面试题

    1.MySQL的复制原理以及流程 基本原理流程,3个线程以及之间的关联: 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 2. 从:io线程——在 ...

  4. Python入门1(简介、安装)

    第一次写博客,希望自己能养成每天一篇的好习惯(表示有很大的挑战,就不立Flag了) 先从Python开始吧.下面是本人所学习的主要教材电子版: 链接:http://pan.baidu.com/s/1e ...

  5. linux网络管理----远程登录工具

    1.对称加密 例子:压缩文件加密码,别人要打开,只能知道你的密码,这样的方法不安全,因为这个密码可能是你的qq密码或者是邮箱密码等等 2.非对称加密 类似于放羽毛球的桶,两边都可以拿资源,两边都加一个 ...

  6. 牛客练习赛3 B - 贝伦卡斯泰露

    链接:https://www.nowcoder.net/acm/contest/13/B来源:牛客网 题目描述 贝伦卡斯泰露,某种程度上也可以称为古手梨花,能够创造几率近乎 为0的奇迹,通过无限轮回成 ...

  7. hdu-4027线段树练习

    title: hdu-4027线段树练习 date: 2018-10-10 18:07:11 tags: acm 算法 刷题 categories: ACM-线段树 # 概述 这道线段树的题可以说是我 ...

  8. 第4天:Django的cookie和session

    Cookie Session Cookie 浏览器请求服务器是无状态的,它的每一次请求对于服务器来说都是新的,服务器默认不会保存用户的状态数据.但很多时候,服务器需要保存用户的一些状态数据,比如用户是 ...

  9. [leetcode tree]95. Unique Binary Search Trees II

    Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...

  10. python通过swig调用静态库

    swig - Simplified Wrapper and Interface Generator swig可以支持python,go,php,lua,ruby,c#等多种语言的包裹 本文主要记录如何 ...