[英]T-sql get min and max value for each day
I am trying to write a query where for each day I get the minimum and maximum price for each item from price details table. 我试图编写一个查询,每天从价格明细表中获取每个商品的最低和最高价格。
In price details table prices are set multiple times a day so there are many records for the same date. 在价格详细信息表中,每天设置多次价格,因此同一日期有很多记录。 So I want a table where there is one row for each date and then join that table to the same table so for each distinct date I want the minimum and maximum value.
因此,我想要一个表,其中每个日期都有一行,然后将该表连接到同一表,因此对于每个不同的日期,我都需要最小值和最大值。
USE [a_trading_system]
GO
/****** Object: Table [dbo].[price_details] Script Date: 07/01/2012 17:28:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[price_details](
[price_id] [int] IDENTITY(1,1) NOT NULL,
[exch_ticker] [varchar](8) NOT NULL,
[price_set_date] [datetime] NOT NULL,
[buy_price] [decimal](7, 2) NOT NULL,
[sell_price] [decimal](7, 2) NOT NULL,
CONSTRAINT [PK_price_detail] PRIMARY KEY CLUSTERED
(
[price_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
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[price_details] WITH CHECK ADD CONSTRAINT [FK_price_details_Contract] FOREIGN KEY([exch_ticker])
REFERENCES [dbo].[Contract] ([exch_ticker])
GO
ALTER TABLE [dbo].[price_details] CHECK CONSTRAINT [FK_price_details_Contract]
GO
SQL Query SQL查询
select distinct
substring(convert(varchar(12),p1.price_set_date), 0, 12),
p2.exch_ticker,
(select MIN(buy_price) from price_details ),
(select MAX(buy_price) from price_details )
from price_details as p1
left join price_details as p2 on p2.exch_ticker = p1.exch_ticker
where p1.exch_ticker = p2.exch_ticker
group by p1.price_set_date, p2.exch_ticker
Summary 摘要
Table has many prices set on the same day. 餐桌在同一天设定了许多价格。 Want min and max values for each day for each exch ticker.
想要每个交易所报价的每天的最小值和最大值。
Thanks 谢谢
A simple group by
should work: 一个简单的
group by
应该起作用:
select cast(price_set_date as date) as [Date]
, exch_ticker
, min(buy_price) as MinPrice
, max(buy_price) as MaxPrice
from price_details as p
group by
exch_ticker
, cast(price_set_date as date)
Not sure why your example query is using a self join. 不知道为什么您的示例查询使用自我联接。 If there's a good reason please add an explanation to your question.
如果有充分的理由,请在您的问题中添加解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.