SQL:每年每月最高的两个温度

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Temperature](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Month] [int] NULL,
[Year] [int] NULL,
[Temperature] [int] NULL,
CONSTRAINT [PK_Temperature] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

--每年每月最高的两个温度(版本1)
select t.* from (
select [Temperature],[YEAR],[Month],ROW_NUMBER() over(partition by [YEAR],[Month] order by [Temperature] desc) rownumber from [Temperature]
)t where t.rownumber<=2

--每年每月最高的两个温度(版本2)
select * from [Temperature] a where (
select COUNT(*) from [Temperature] b where a.Year=b.Year and a.Month=b.Month and a.Temperature<b.Temperature
)<2 order by a.Year,a.Month

时间: 2024-12-03 03:07:04

SQL:每年每月最高的两个温度的相关文章

安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会

今天,在运行<第一行代码>coolweather第二阶段代码,又一次报错,还是神奇地与昨天相似,提示,city_id字段不存在,这里我有两种理解,一种是sql语句出错了,另外一种是没有获取city_id值,关于前一种,我在”详细“检查比较了,County表的建表语句后,首先排除了,然后一股脑投入如何解决第二种问题当中,最后,再一次惨痛事实告诉我,以后只要提示“no such column” 的提示,那么毫无疑问,肯定是数据库里面没有这个字段也就是说,sql语句建表那里就出错了.如图: sql语

sql 查询每月的销售金额

sql 数据分月统计,表中只有每天的数据,现在要求求一年中每个月的统计数据(一条sql) SELECT   MONTH (  那个日期的字段  ),   SUM(  需要统计的字段, 比如销售额什么的 ) FROM   表 WHERE   YEAR (  那个日期的字段  ) = 2010   -- 这里假设你要查 2010年的每月的统计. GROUP BY MONTH (  那个日期的字段  ) -------------------------------------------------

SQL Cursor 基本用法[用两次FETCH NEXT FROM INTO语句?]

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 table1结构如下 id int name varchar(50) declare @id int declare @name varchar(50) declare cursor1 cursor for --定义游标cursor1 select * from table1 --使用游标的对象(

sql取出每月最早的上报的数据

oracle: 每月最新一条: SELECT * FROM (select data_time,meter_id,TT_CREDIT,RE_CREDIT,DATA_STR,min(data_time) over(partition by TO_Char(data_time,'YYYY-MM')) as "atime" from WATER_DATA where 1=1and meter_id like '%111111111111%') x where data_time="

sql server中如何将两个字段数据合并成一个字段显示(字段与字段添加特殊符号)

之前,我在做统计数据时,需要一个字段显示某月的订单数量和订单金额,要求组合成一个字段,用括号组合. 统计出来的结果大概是这样的,首先我们来创建一些模拟数据 ---创建订单表--- create table OmsOrder( Uid int identity(1,1) primary key, OrganizeName varchar(20) not null, OrderCount int not null, OrderMoney float not null ) --添加模拟数据--- in

sql except 用法,找两个表中非共同拥有的

;with tt as (select a.id as id from [dbo].[1234] a where a.id not in (select a.ProtocolID from ProtocolInfo a where InfoUpdateTime>'2015-06-19 14:49:00.307')) --select 25735+99352--25735select cc.DebetType,cc.UpdateTime,cc.InfoAddTime,* from Protocol

在sql中case子句的两种形式

case子句,在select后面可以进行逻辑判断. 两种形式:判断相等.判断不等 一.判断相等的语法: case 列名 when ...  then ... when ...  then ... else ... end as 列别名 ONE:新建一个表,插入初始数据. --查整个表 select * from SDetail --插入初始数据 insert into SDetail (SName,SScore,SGender) values('刘德华',99,0) insert into SD

sql 中,如何获取两个日期之前月数、周数、天数

1.获取两个日期之间的月数.周数.天数语法 --1.获取两个日期之间的月数.周数.天数 --1.1)声明参数 declare @startDate varchar(20) declare @endDate varchar(20) --1.2)获取两个日期直接的月数 select DATEDIFF(MM,@startDate,@endDate) --1.3)获取两个日期直接的月数 select DATEDIFF(WW,@startDate,@endDate) --1.4)获取两个日期直接的月数 s

Sql触发器调用外部程序对两个数据库进行数据同步

首先创建两个数据库:SyncA是数据源,SyncB是对SyncA进行同步的数据库. 在SyncA和SyncB中分别创建Source表和Target表,实际业务中,两张表的结构大多不相同.     然后创建一个空的项目:ClassLibrarySync