2015-04-01 35 views
-1

我希望mysql查询检查结束日期的高值是否大于该符号结束日期-1天内的一年范围内的所有高。比较某个特定日期范围内的最大值使用组

MAX与group by并检查它与正确的符号进行比较。我该如何继续?

我的表结构是:

id Symbol date  high 
1 ABC 2015-01-23 45 
2 ABC 2015-01-22 40 
3 ABC 2014-01-28 33 
4 xyz 2015-01-23 37 
5 xyz 2015-01-20 70 
6 ANO 2015-01-20 170 
7 JE  2015-01-25 560 
8 JE  2015-01-23 770 


SELECT `symbol`,`high` as current_high from history as h 
where date='2015-01-23' 
AND symbol = 'ABC'; 

SELECT `date`,`symbol`, MAX(`high`) as 1_yrhigh from history 
where date between '2014-01-23' 
and '2015-01-22' AND symbol='ABC' 

想要的结果,如果current_high> 1yr_high

所以从上面的示例表的查询结果应该是

1 ABC 2015-01-23 45 

8 JE 2015-01-23 770 

XYZ不会显示为37 < max即70

ANO不显示为无线,以2015年1月23日出现

回答

0

,以获得高电流低于查询

Select symbol,MAX(high) as currentHigh 
From table 
Where date=CURDATE() 
Group By symbol 

每个符号的使用,以获得最后1年来新高,除了下面的查询当前的日期使用

Select symbol,MAX(high) as lastOneYrHigh 
From table 
Where date between (CURDATE()-INTERVAL 1 DAY-INTERVAL 1 YEAR)-(CURDATE() - INTERVAL 1 DAY) 
Group By symbol 
+0

我可以同时得到一个单一的查询花花公子:) – Qpd 2015-04-02 07:02:43

+0

它需要一个子查询。 – 2015-04-03 18:04:31