SQL Oracle 19 Как объединить часть данных в группировке GROUP BY
Хочу, чтоб выдало 3 строки в группировке:
Иван
Петр
Другие
Вот как объединить все другие варианты (Ольга, Юлия) в одно ?
Имя Зарплата
Иван 2000
Ольга 3000
Иван 4000
Петр 5000
Юлия 6000
Петр 7000
Иван 8000
Ответы (2 шт):
Автор решения: Nowhere Man
→ Ссылка
Используйте CASE - WHEN в SELECT и GROUP BY:
-- MyTable(Name, Salary)
SELECT
CASE WHEN Name IN('Петр', 'Иван') THEN Name ELSE 'Другие' END AS Name,
SUM(Salary) AS TotSalary
FROM MyTable
GROUP BY (CASE WHEN Name IN('Петр', 'Иван') THEN Name ELSE 'Другие' END)
Или же во вложенном запросе (inline view):
-- MyTable(Name, Salary)
SELECT Name, SUM(Salary)
FROM (
SELECT
CASE WHEN Name IN('Петр', 'Иван') THEN Name ELSE 'Другие' END AS Name,
Salary
FROM MyTable
) MyView
GROUP BY Name
Автор решения: fox
→ Ссылка
with t as (
SELECT
CASE
WHEN name IN ('Петр', 'Иван') THEN name
ELSE 'Другие'
END AS name,
salary
FROM mytable
)
SELECT name, SUM(salary) from t GROUP BY name;