В SQL часто встречаются сценарии, когда вам необходимо объединить похожие значения или выполнить условные операции с использованием оператора CASE WHEN вместе с функцией COUNT. В этой статье рассматриваются несколько методов достижения этой цели и приводятся примеры кода для каждого подхода.
Метод 1: использование GROUP BY и CASE WHEN
Пример кода:
SELECT
CASE
WHEN column_name = 'Value1' THEN 'Combined Value 1'
WHEN column_name = 'Value2' THEN 'Combined Value 2'
ELSE 'Other Values'
END AS CombinedColumn,
COUNT(*) AS Count
FROM
table_name
GROUP BY
CombinedColumn;
Метод 2: использование подзапросов и CASE WHEN
Пример кода:
SELECT
CASE
WHEN column_name IN ('Value1', 'Value2') THEN 'Combined Values'
ELSE 'Other Values'
END AS CombinedColumn,
COUNT(*) AS Count
FROM
(
SELECT
column_name
FROM
table_name
) AS subquery
GROUP BY
CombinedColumn;
Метод 3: использование общих табличных выражений (CTE) и CASE WHEN
Пример кода:
WITH combined_values AS (
SELECT
CASE
WHEN column_name = 'Value1' THEN 'Combined Value 1'
WHEN column_name = 'Value2' THEN 'Combined Value 2'
ELSE 'Other Values'
END AS CombinedColumn
FROM
table_name
)
SELECT
CombinedColumn,
COUNT(*) AS Count
FROM
combined_values
GROUP BY
CombinedColumn;
Метод 4: использование оператора UNION и CASE WHEN
Пример кода:
SELECT
'Combined Value 1' AS CombinedColumn,
COUNT(*) AS Count
FROM
table_name
WHERE
column_name = 'Value1'
UNION
SELECT
'Combined Value 2' AS CombinedColumn,
COUNT(*) AS Count
FROM
table_name
WHERE
column_name = 'Value2'
UNION
SELECT
'Other Values' AS CombinedColumn,
COUNT(*) AS Count
FROM
table_name
WHERE
column_name NOT IN ('Value1', 'Value2');