Возврат других столбцов совокупного результата - PullRequest
0 голосов
/ 14 декабря 2011

Дано:

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 Ответ

2 голосов
/ 14 декабря 2011

Для гарантированного поведения у вас должно быть поле timestamp в агрегатном выражении или в предложении GROUP BY.Если вы этого не сделаете (как в вашем примере), возвращаемое значение не определено (и фактически выбрано почти случайным образом).

Вместо этого вы можете сделать это в два шага и никогда не иметь никакого поля «случайным образом»выбрал ...

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...