Получение связанных столбцов в группе по запросу SQL

У меня есть база данных с данными, относящимися к странам, упрощенная она выглядит примерно так:

ID | country_id | country_ISO | var_value
1  | 1          | FR          | 10
2  | 2          | BE          | 15
3  | 3          | NL          | 20
4  | 1          | FR          | 6
5  | 2          | BE          | 8
6  | 2          | BE          | 12

Я хотел бы получить сумму значений «var_value», но с этим хочу иметь country_id, а также country_ISO.

Я могу сделать это:

SELECT
  country_ISO,
  SUM(var_value) AS sum_of_value
FROM
  table_name
GROUP BY
  country_ISO;

Этот запрос даст мне сумму var_value и ISO страны, но я также хочу получить country_id. Как я могу подзапросить / самостоятельно присоединиться, чтобы получить дополнительные столбцы, которые связаны (уникальным образом), например, country_ISO?

Всего 3 ответа


Поскольку country_iso зависит от country_id любом случае, просто добавьте GROUP BY по country_id .

SELECT country_id,
       country_iso,
       sum(var_value) sum_of_value
       FROM table_name
       GROUP BY country_id,
                country_iso;

Просто включите эту колонку в предложение GROUP BY :

SELECT country_id, country_ISO, SUM(var_value) AS sum_of_value
FROM table_name tn
GROUP BY country_id, country_ISO;

Если contry_id, contry_ISO соответствует 1: 1, то просто сгруппируйте с помощью contry_id, contry_ISO.

SELECT
  contry_id,
  country_ISO,
  SUM(var_value) AS sum_of_value
FROM
  table_name
GROUP BY
  contry_id,
  country_ISO;

Есть идеи?

10000