2

考虑下表:

stock    _date       return2  bullishness
-----------------------------------------
1        2011-03-14  0.10     0.75
2        2011-03-14  0.05     1.75
3        2011-03-14  0.11     1.00
1        2011-03-15  0.03     1.99
2        2011-03-15  0.30     4.00
3        2011-03-15  0.00     0.60

我正在寻找一个查询,它将:

  • 查看特定的bullishnessfor all sstock_date
  • 并返回最高的行bullishness

我本来期望的,因为2011-03-14要做到这一点

SELECT MAX(bullishness) as bullishness, stock, return2 
FROM stocks 
WHERE _date = '2011-03-14'

但这总是返回第一行,在这种情况下:

1   2011-03-14  0.10  0.75

虽然我希望查询返回第二行(因为它的 abullishness为 1.75,高于 0.75):

2   2011-03-14  0.05  1.75

我究竟做错了什么?

4

1 回答 1

4

诸如此类的聚合函数MAX()不会按照您期望的方式工作。

你可以使用这个技巧来得到你想要的:

SELECT bullishness, stock, return2 
FROM stocks 
WHERE _date = '2011-03-14'
ORDER BY bullishness DESC
LIMIT 1

你基本上是按看涨下降的顺序排列的,所以最大的看涨首先出现。那么你只限于一个结果。

于 2012-08-15T21:52:17.013 回答