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

次のようなクエリを探しています。

  • 特定のbullishnessすべてのを見てくださいstock_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

クエリが2番目の行を返すことを期待していましたbullishnessが(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

基本的に強気の降順で並べ替えているので、最大の強気が最初に来ます。次に、結果を1つだけに制限します。

于 2012-08-15T21:52:17.013 に答える