Как получить максимальное значение в MySQL? - PullRequest
0 голосов
/ 21 апреля 2020

Как получить значение MAX в каждом альбоме (45, 12, 22, 8) в следующей таблице? Я пытался с этим запросом. Но он вернул мне первое значение, а не максимальное значение. (3, 6, 5, 6)

SELECT
    *
FROM
    (
        SELECT
            *
        FROM
            contentnew
        WHERE
            genreID = 1
        ORDER BY
            albumID DESC,
            reg_count DESC
    ) AS newTB
GROUP BY
    albumID;

Посмотрите это

table

Если я использую

enter image description here

Ответы [ 3 ]

1 голос
/ 21 апреля 2020

После группировки вы можете применять агрегатные функции, такие как max, к каждой группе. В вашем примере попробуйте:

SELECT albumID, max(reg_count) as max_count
FROM contentnew 
GROUP BY albumID

Это будет проецировать каждый идентификатор альбома с max_count в группе. В операторе выбора вы можете использовать только агрегатные функции. Причина, по которой мы можем проецировать (или распечатать) идентификатор альбома, заключается в том, что это столбец, по которому мы сгруппированы.

Следующие комментарии:

SELECT *
FROM contentnew as c1
WHERE c1.reg_count < (
    SELECT max(c2.reg_count)
    FROM contentnew as c2
    WHERE c1.albumID = c2.albumID
    GROUP BY c2.albumID)
1 голос
/ 21 апреля 2020

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

with contentnew_test
as
(
select row_number() over (partition by albumId order by reg_count desc) row
,* from 
contentnew
)
select * from contentnew_test where row = 1 order by reg_count desc;

Я использовал это как ссылку, так как не уверен насчет синтаксис https://www.mysqltutorial.org/mysql-window-functions/mysql-row_number-function/

Подзапрос даст вам набор результатов примерно так:

row albumId reg_count  ...
1   1        8         ...
2   1        7         ...
3   1        3         ...
4   1        1         ...
1   2        22        ...
2   2        9         ...
3   2        6         ...
4   2        1...and so on.
1 голос
/ 21 апреля 2020

Можно попробовать

select max(reg_count) from contentnew group by albumID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...