Я несколько новичок в SQL-запросах, и я борюсь с этой конкретной проблемой. Допустим, я запрос, который возвращает следующие 3 записи (хранятся в одном столбце для простоты):
Том
Джек
ТомПолучить имена по коэффициенту их возникновения
И я хочу, чтобы эти результаты, сгруппированные по имени, а также включать в себя часть (отношение) появления этого имени из общей суммы возвращенных записей.
Итак, желаемый результат будет (в виде двух столбцов):
Tom | 2/3
Джек | 1/3
Как бы я это сделал? Определение числителя довольно просто (я могу просто использовать имена COUNT() и GROUP BY), но у меня возникли проблемы с переводом этого значения в соотношение из числа возвращенных строк.
Любая помощь очень ценится!
Ну, часть «имен» на самом деле является его собственным длинным запросом в моем случае. Должен ли я просто скопировать и вставить весь подзапрос, который появится в общем запросе дважды? Или есть способ сделать что-то вроде «SELECT name, COUNT (name)/(SELECT COUNT (1) FROM (SELECT ...) AS my_subquery) FROM my_subquery GROUP BY name;" ? Если есть, я не могу получить синтаксис правильно. –
Кроме того, структура запроса, который вы предоставили, работает, но мне пришлось изменить «COUNT (1)» на «CAST (COUNT (1) AS float», поскольку в противном случае он выполнял целочисленное деление и возвращал все нули. –