sql >> Base de Datos >  >> RDS >> Oracle

ORACLE SQL selecciona distinto sin eliminar duplicados

No entiendes lo que distinct es. No es una función. Es un modificador en select y afecta a todos columnas que se seleccionan. Por lo tanto, se está comportando exactamente como debería.

Si desea agregaciones por código postal y semana, esas son las únicas dos columnas que deben estar en el group by :

SELECT vo.ZIP_CODE, TO_CHAR(ca.CALENDAR_WEEK),
       -- vo.REGION_ID
        COUNT(vo.ORDER_ID),
        SUM(vo.AMOUNT)
FROM VENDOR_ORDERS vo JOIN
     CALENDAR ca
     ON TRUNC(vo.ORDER_CREATION_DATETIME) = sd.CALENDAR_DATE
WHERE vo.REGION_ID = 1
GROUP BY vo.ZIP_CODE, TO_CHAR(ca.CALENDAR_WEEK)

Probablemente podría incluir region_id también, asumiendo que cada código postal está en una región.