Это, кажется, дает правильный ответ:

QL я хотел бы иметь дополнительный столбец, показывающий сумму значений определенного столбца. Однако числа, которые я хотел бы суммировать, взяты из подзапроса и не хранятся в отдельной таблице, что-то вроде этого:

(SELECT a.ID, MAX(a.COUNT_ID) AS MAX_COUNT FROM
    (SELECT ID, COUNT(*) AS COUNT_ID
    FROM my_table
    GROUP BY COL1, COL2) a
 GROUP BY COL1, COL2) b

И это будет выводить что-то вроде:

ID     MAX_COUNT
ABC    1
DEF    2
GHI    3

А теперь я хочу дополнительный столбец, показывающий сумму MAX_COUNT, например, (повторяется по всем строкам):

ID     MAX_COUNT    SUM_MAX_COUNT
ABC    1            6
DEF    2            6
GHI    3            6

Фактическая цель - показать процент MAX_COUNT от общего MAX_COUNT, то есть 1/6, 2/6 и 3/6. Как мне это сделать? Я уже пытался сделатьCROSS JOIN но это не работает:

SELECT * FROM
    ((SELECT a.ID, MAX(a.COUNT_ID) AS MAX_COUNT FROM
        (SELECT ID, COUNT(*) AS COUNT_ID
        FROM my_table
        GROUP BY COL1, COL2) a
     GROUP BY COL1, COL2) b
CROSS JOIN (SELECT SUM(b.MAX_COUNT)) AS c

Ошибка: неизвестная таблица 'b'

ПРИМЕР

Пример таблицы:

CREATE TABLE TABLE1 (
COL1 varchar(255),
COL2 varchar(255),
DAY int,
HOUR int);

INSERT INTO TABLE1 VALUES
('X','Y',1,12),
('X','Y',1,13),
('X','Y',1,13),
('A','B',2,19),
('X','B',3,13),
('X','B',3,13);

Теперь я хочу, чтобы для каждой комбинации COL1 и COL2 число строк в этой таблице для каждого часа:

SELECT COL1, COL2, HOUR, COUNT(*) AS COUNT_LINES
FROM TABLE1
GROUP BY DAY, HOUR, COL1, COL2;

Что выводит это:

COL1    COL2    HOUR    COUNT_LINES
X       Y       12      1
X       Y       13      2
A       B       19      1
X       B       13      2

Теперь я хочу, чтобы для каждой комбинации COL1 и COL2 был максимум COUNT_LINES, поэтому я использую запрос выше в подзапросе:

SELECT a.COL1, a.COL2, MAX(a.COUNT_LINES)
FROM 
    (SELECT COL1, COL2, HOUR, COUNT(*) AS COUNT_LINES
    FROM TABLE1
    GROUP BY DAY, HOUR, COL1, COL2) a
GROUP BY COL1, COL2;

Что выводит это:

COL1    COL2    MAX(COUNT_LINES)
A       B       1
X       B       2
X       Y       2

Теперь на последнем шаге я хочу, чтобы столбец SUM of MAX (COUNT_LINES) находился в отдельном столбце, например так:

COL1    COL2    MAX(COUNT_LINES)    SUM(MAX(COUNT_LINES))
A       B       1                   5
X       B       2                   5
X       Y       2                   5

Но это та часть, которую я не знаю, как сделать.

Ответы на вопрос(3)

Ваш ответ на вопрос