Рассчитанная сумма / количество по категориям и сортировка по убыванию вместе с внутренним объединением - PullRequest
0 голосов
/ 02 апреля 2020

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

SELECT COUNT(*) AS counted, category
FROM mytable
GROUP BY category
ORDER BY counted DESC;

Без ORDER BY counted DESC это работает, однако это не отсортировано. Хотелось бы увидеть максимум сразу, так что сортируй по убыванию. Однако, когда он запускается, появляется сообщение и просит меня ввести значение для count. Почему я не могу сделать это за один шаг, почему это не работает?

То же самое для суммы:

SELECT sum(variable) AS calcsum, category
FROM mytable
GROUP BY category
ORDER BY calcsum DESC;

Кроме того, у меня та же проблема или похожая, когда я пытаюсь сделать это в один шаг с объединением. У меня есть одна таблица с предоставленными идентификаторами (переменная называется ключами). Другая таблица с идентификаторами, категорией, переменной фильтра и оценкой. Я хочу, чтобы сумма баллов по категориям и сортировать ее по убыванию. Пока у меня есть:

SELECT SUM(score) AS calcsum, category

FROM (

SELECT keys, category, filter, score INTO newdataset
FROM table1 INNER JOIN table2 ON table1.keys=table2.ID
WHERE table2.filter="Value")

GROUP BY category;

И я подумал еще раз добавить: ORDER BY calcsum DESC

Однако даже без добавления ORDER BY я получаю сообщение об ошибке "Запрос действия не может быть используется в качестве источника строки ". Так в чем здесь моя ошибка?

Ответы [ 2 ]

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

просто вы можете использовать order by 2 desc 2 означает второй столбец в вашем операторе выбора

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

Просто повторите выражение COUNT(*):

SELECT COUNT(*) AS counted, category
FROM mytable
GROUP BY category
ORDER BY COUNT(*) DESC;

РЕДАКТИРОВАТЬ:

Если вы хотите это с INTO и JOIN s:

SELECT SUM(score) AS calcsum, category
INTO newdataset
FROM table1 INNER JOIN
     table2
     ON table1.keys  =table2.ID
WHERE table2.filter = "Value"
GROUP BY category
ORDER BY SUM(score) DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...