我正试图找出一种从一组数据中识别“记录高”值的有效方法。这比找到最大值更复杂,因为我想在记录时找到所有最大/记录高值的值。因此,为了尽可能简化问题,想象一下模型/数据库表,如:
Temperatures(date, value)
的值如下:
*1/1/2001: 79
*1/2/2001: 81
1/3/2001: 81
1/4/2001: 80
*1/5/2001: 82
1/6/2001: 81
*1/7/2001: 90
我正在尝试查找有助于将上面的已加星标(“*”)记录识别为“记录”的查询。 rails finder或raw sql语句都可以正常工作。到目前为止我得到的最好的是一个查询,它会告诉我一个给定的值是否是一个记录,但是它不能很好地扩展。
答案 0 :(得分:0)
只是一个小组将工作正常。试试这个
SELECT MAX(Temperature), Date
FROM dbo.Temperatures
GROUP BY Date
答案 1 :(得分:0)
您可以使用not exists
选择不存在较高值和较早日期的另一行的行
select date, value
from mytable t1
where not exists (
select 1 from mytable t2
where t2.value >= t1.value
and t2.date < t1.date
)
答案 2 :(得分:0)
在Standard-SQL中:
with temp (d, t, r) as
(select d, t, row_number() over (order by d)
from t),
data (d, t, r) as
(select d, t, r
from temp
where r = 1
union all
select case when t.t > d.t then t.d else d.d end,
case when t.t > d.t then t.t else d.t end,
t.r
from temp t
inner join data d on d.r+1 = t.r)
select min(d), min(t)
from data
group by d, t