SQL_求集合中每天最大时间记录的总和
--问题求 集合中每天最大时间的总和
表中的数据
列: 用户 分数 时间
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_求集合中每天最大时间记录的总和的更多相关文章
- JAVA求集合中的组合
好几个月没弄代码了,今天弄个求组合的DEMO 思路是将集合的每个值对照一个索引,索引大小是集合的大小+2.索引默认为[000...000],当组合后选取的组合值demo为[0100..00].然后根据 ...
- C#部分---arraylist集合、arraylist集合中的object数据转换成int类string类等;间隔时间的表示方法;
ArrayList和Array的区别: 相同点:1.两者都实现了IList.ICollection.IEnumerable接口: 2.两者都可以使用证书索引访问集合中的元素,包括读取和赋值 ...
- Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制
1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...
- map集合修改其中元素 去除Map集合中所有具有相同值的元素 Properties长久保存的流操作 两种用map记录单词或字母个数的方法
package com.swift.lianxi; import java.util.HashMap; import java.util.Iterator; import java.util.Map; ...
- 【转载】C#中使用Average方法对List集合中相应元素求平均值
在C#的List集合操作中,有时候需要对List集合元素进行汇总求平均值,如数值类型的List集合元素,有时候对象类型的List集合也需要对集合中的元素的某个对象进行汇总求平均值,此时都可以使用到Av ...
- Day_11【集合】扩展案例5_对list集合对象中的元素进行反转,求最大值最小值,求元素i在list集合中首次出现的索引,将oldvalue替换为newvalue
分析以下需求,并用代码实现 定义MyArrays工具类,该工具类中有以下方法,方法描述如下: 1.public static void reverse(ArrayList<Integer> ...
- (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
今日在写一个功能时,需要从MQ拿取数据集合调用对端系统进行批量处理,为了幂等支持,在循环内部如果不满足调用条件就直接从集合中移除. 以上是一个典型的循环集合内删除的场景任务,工作一年第一次遇到这个场景 ...
- 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token
为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...
- 用Scala实现集合中相邻元素间的差值
欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...
随机推荐
- codis+redis集群学习整理(待续)
Codis 由四部分组成: Codis Proxy (codis-proxy) Codis Manager (codis-config) Codis Redis (codis-server) ZooK ...
- hmm学习笔记(二)
学习hmm近一周的时间,做个总结. 参考 李航的<统计学习方法>第9章,第10章 本文包含: 1.hmm模型 2.前向后向算法 3.Baum-Welch算法 4.维特比算法 1.hmm模 ...
- USACO 5.4 Character Recognition
Character Recognition This problem requires you to write a program that performs character recogniti ...
- Java学习笔记之:Spring MVC 环境搭建
一.创建项目 1.新建java动态项目 2.在web-inf/lib文件夹下导入jar 3.创建所需要的包和文件 二.搭建SpringMVC 1.配置web.xml(WEB-INF下) <?xm ...
- Bootstrap--响应式表格布局
<div class="row"> <div class="col-sm-2 col-md-2" style="min-height ...
- 分布式系统的烦恼------《Designing Data-Intensive Applications》读书笔记11
使用分布式系统与在单机系统中处理问题有很大的区别,分布式系统带来了更大的处理能力和存储容量之后,也带来了很多新的"烦恼".在这一篇之中,我们将看看分布式系统带给我们新的挑战. 1. ...
- Java重写、重载与覆盖
Java继承.重载与重写 一.继承(单继承) 1.利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 2.当Sub类和Base类在同一个包时,Sub类继承Base类中的publi ...
- [UOJ430]line
首先有个暴力DP,设$s_i=\sum\limits_{j\geq i}w_j$,有$f_i=\min\limits_{l_i\lt j\leq i}f_{j-1}+s_{i+1}\max\{t_{j ...
- Easy File Sharing Web Server 6.9远程溢出漏洞
from struct import pack import socket,sys import os host="192.168.109.129" port=80 junk0 = ...
- Kolibri v2.0-Buffer Overflow成功复现
Kolibri v2.0-Buffer Overflow成功复现及分析 文件下载地址:http://pan.baidu.com/s/1eS9r9lS 正文 本次讲解用JMP ESP的方法溢出 关于网上 ...