Выбор максимальной записи - PullRequest
0 голосов
/ 01 января 2019

Я бы хотел, чтобы мой запрос возвращал количество точек диаграммы только в том случае, если максимальная версия диаграммы для каждого идентификатора диаграммы имеет тип диаграммы Q. Я хочу, чтобы он рассчитывал только тогда, когда это тип диаграммы Q.

(CHART_ID,CHART_TYPE,CHART_VERSION,CNT)
(CHART1,Q,11,10)
(CHART1,Q,13,20)
(CHART1,I,14,5)

SELECT
    CHART_ID,
    CHART_TYPE,
    CHART_VERSION,
    COUNT(CHART_POINTS) AS CNT
FROM CHART_TABLE
WHERE
    CHART_TYPE = 'Q' AND 
    CHART_ID = 'CHART1'
GROUP BY
    CHART_ID,
    CHART_TYPE,
    CHART_VERSION
ORDER BY
    CHART_ID ASC

см. запрос

Должен возвращаться (CHART1, Q, 13,20) для этого идентификатора диаграммы.

1 Ответ

0 голосов
/ 01 января 2019

Этот работал:

WITH cte AS (
    SELECT
        CHART_ID,
        CHART_TYPE,
        CHART_VERSION,
        COUNT(CASE WHEN CHART_TYPE = 'Q' THEN 1 END) OVER
            (PARTITION BY CHART_ID, CHART_VERSION) CNT,
        ROW_NUMBER() OVER (PARTITION BY CHART_ID ORDER BY CHART_VERSION DESC) rn
    FROM CHART_TABLE
)

SELECT
    CHART_ID,
    CHART_TYPE,
    CHART_VERSION,
    CNT
FROM cte
WHERE
    rn = 1 AND CHART_TYPE = 'Q'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...