返回聚合结果的其他列

时间:2011-12-14 17:56:17

标签: sql sqlite

假设:

timestamp |  col1  |   col2
============================
xx            abc      5
yy            abc      4
zz            def      7
rr            def      6


SELECT timestamp,col1,min(col2) 
FROM table 
GROUP BY col1 
ORDER BY min(col2) ASC

返回:

xx       abc     4
zz       def     6

时间戳似乎搞砸了,所以我确信我没有按照预期的方式使用群组。我怎么得到:

yy     abc      4
rr     def      6

1 个答案:

答案 0 :(得分:2)

对于保证行为,您必须在聚合表达式或GROUP BY子句中具有timestamp字段。如果你不这样做(如你的例子),那么返回的值是不确定的(实际上几乎随机选择)。

相反,你可以分两步完成,所以永远不要选择“randonly”字段...

SELECT
  *
FROM
  yourTable
INNER JOIN
  (SELECT col1, MAX(col2) as max_col2 FROM yourTable GROUP BY col1) AS lookup
    ON  yourtable.col1 = lookup.col1
    AND yourtable.col2 = lookup.col2