Mysql максимальная функция запроса для каждой строки нового столбца - PullRequest
0 голосов
/ 30 мая 2020

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

Я хотел бы иметь одинаковое значение в каждом строка. Из первого кода без функции MAX я получаю 533 строки, затем, когда я использую MAX(), я получаю только одну строку.

SELECT
    ap.id,
    ap.name,
    apc.closing_prob_c
FROM a_assigned_prospect ap
LEFT JOIN a_assigned_prospect_cstm apc ON apc.id_c=ap.id
SELECT
    ap.id,
    ap.name,
    apc.closing_prob_c,
    MAX(apc.closing_prob_c)
FROM a_assigned_prospect ap
LEFT JOIN a_assigned_prospect_cstm apc ON apc.id_c=ap.id

1 Ответ

1 голос
/ 30 мая 2020

Я понимаю, что вы хотите, чтобы новый столбец имел максимальное значение apc.closing_prob_c сверх всего набора результатов , при этом возвращая исходные 533 строки.

Если вы работаете MySQL 8.0, это просто с максимальным окном:

select
    ap.id,
    ap.name,
    apc.closing_prob_c,
    max(apc.closing_prob_c) over() max_closing_prob_c
from a_assigned_prospect ap
left join a_assigned_prospect_cstm apc on apc.id_c = ap.id

В более ранних версиях вы обычно использовали подзапрос:

select
    ap.id,
    ap.name,
    apc.closing_prob_c,
    (
        select max(apc1.closing_prob_c) 
        from a_assigned_prospect_cstm apc1
        where exists (
            select 1 from a_assigned_prospect ap1 where ap1.id = apc1.id_c
        )
    ) max_closing_prob_c
from a_assigned_prospect ap
left join a_assigned_prospect_cstm apc on apc.id_c=ap.id
...