如何在不使用子查詢的情況下獲取聚合函數的記錄詳細信息?如何獲得沒有子查詢的集合函數的行的細節?
我有一個數據集如下:
CREATE TABLE SOMEDATA(
id int,
low int,
op int,
yc int,
tc int,
volume int,
Atimestamp time)
INSERT INTO SOMEDATA VALUES(5631, 5500, 5600, 5680, 5680, 300527, '13:16:12.462')
INSERT INTO SOMEDATA VALUES(5631, 5500, 5600, 5680, 5680, 301720, '13:16:13.304')
INSERT INTO SOMEDATA VALUES(5631, 5500, 5600, 5680, 5680, 302041, '13:16:13.306')
INSERT INTO SOMEDATA VALUES(5631, 5500, 5600, 5680, 5680, 302410, '13:16:13.682')
INSERT INTO SOMEDATA VALUES(5631, 5500, 5600, 5680, 5680, 302548, '13:16:15.818')
INSERT INTO SOMEDATA VALUES(5632, 5500, 5600, 5680, 5680, 302548, '13:16:15.818')
其中我查詢做:
SELECT * FROM SOMEDATA
INNER JOIN (select max(Atimestamp) as tm,id FROM SOMEDATA group by id) t
on t.tm = SOMEDATA.Atimestamp AND SOMEDATA.id = t.id
這似乎是一個糟糕的方式,雖然這樣做(例如,據我瞭解,這查詢鎖定表兩次) - 是否有更好的方法來做到這一點(也許有HAVING)?
可能重複[獲取的聚合列每個組的前1行](http://stackoverflow.com/questions/6841605/get -top-1-row-of-group) – GSerg
你可以使用像ROW_NUMBER這樣的窗口函數,但是如果在性能上有差異,我不認爲你會得到很多。執行計劃的基礎應該是一樣的,你的查詢也很好。 –
@GSerg是的,它是重複的,但鏈接的答案不包含內聯等級函數,這正是我所尋找的。 – Alex