Si usted está buscando para obtener las filas que contienen los valores de MAX(num) GROUP BY id
, esto tiende a ser un patrón común ...
WITH
sequenced_data
AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY id ORDER BY num DESC) AS sequence_id,
*
FROM
yourTable
)
SELECT
*
FROM
sequenced_data
WHERE
sequence_id = 1
EDITAR
No sé si TeraData permitirá esto, pero la lógica parece tener sentido ...
SELECT
*
FROM
yourTable
WHERE
num = MAX(num) OVER (PARTITION BY id)
O tal vez ...
SELECT
*
FROM
(
SELECT
*,
MAX(num) OVER (PARTITION BY id) AS max_num_by_id
FROM
yourTable
)
AS sub_query
WHERE
num = max_num_by_id
Esto es ligeramente diferente de mi respuesta anterior; si se vinculan varios registros con el mismo MAX(num)
, se devolverán todos, la otra respuesta solo devolverá uno.
EDITAR
En su SQL propuesto el error se relaciona con el hecho de que la cláusula OVER()
contiene un campo no en su GROUP BY. Es como tratar de hacer esto ...
SELECT id, num FROM yourTable GROUP BY id
num
no es válido, porque no puede haber varios valores en ese campo para cada fila devuelta (con las filas devueltas definidas por GROUP BY id
).
De la misma manera, no puede poner num
dentro de la cláusula OVER()
.
SELECT
id,
MAX(num), <-- Valid as it is an aggregate
MAX(num) <-- still valid
OVER(PARTITION BY id), <-- Also valid, as id is in the GROUP BY
MAX(num) <-- still valid
OVER(PARTITION BY num) <-- Not valid, as num is not in the GROUP BY
FROM
yourTable
GROUP BY
id
Ver esta pregunta para cuando no se puede especificar algo en la cláusula OVER()
y una respuesta que muestra cuándo (creo) puede: over-partition-by-question
no podemos ver su mensaje de error desde aquí. – RBarryYoung
¿Puede mostrar el resultado que espera, la descripción no tiene sentido para mí ... 'Quiero tomar el valor asociado con el máximo de cada número para cada ID'. Tampoco estoy seguro de qué diferencia haría un ORDER BY en una función MAX() ... – MatBailie
No es una respuesta exacta a la pregunta, pero una buena introducción sobre el oráculo Las funciones analíticas se pueden encontrar en [orafaq] (http: // www.orafaq.com/node/55). La publicación ayuda a comprender los conceptos con ejemplos simples. –