Как правильно присоединять таблицы на основе их сгруппированных данных?

Ссылка скопирована
1 ответ

Есть таблица с Физ.Лицами.
Есть таблица с образованиями и FK на физ. лицо.

В таблице с образованиями на одно физ. лицо может быть заведено несколько записей. Мне необходимо отобрать только 1 запись по максимальному типу образования, дате получения образования (диплома) и id. все эти поля в одной таблице.

Как сделать выборку не по колхозному? (мне пришлось несколько раз группировать массивную таблицу по каждому из этих полей для получения max(id), а также, после этого ещё раз связать её с основным запросом.

в гугле ничего не могу найти, мб не так ищу...

Дополнительно:

Делай fiddle с примером (не умеешь - хотя бы выложи CREATE TABLE + INSERT INTO). Исходные данные и требуемый ответ для них, с подробными пояснениями.

  • Уверен, что должно быть три таблицы- 1. Физ.лицо, 2.образование, 3. Соединение 1-ой ко 2-ой,

    Максимальность по образованию должно хранится во 2-ой таблице, дата получения образования в 3-ей.

    При выводе ко всему, что тебя интересует добавляешь сортировку для долнейшего ограничения по ней где-то так

    SELECT * FROM (
    SELECT
    X,....
    ROW_NUMBER() OVER(PARTITION BY
    T1.PID (перзон-ид) ORDER BY max( T2.OPRIO /по образованию) , T3.ODAT /дата получения AS SRC_NR
    FROM
    T1,T2,T3
    WHERE T1.PID =T2.PID AND T2.OID = T3.OID
    ) SRC

    WHERE SRC.SRC_NR = 1

  • Myclass, Спасибо!
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ирина WP Ответ

    Для правильного объединения таблиц на основе сгруппированных данных, вам необходимо использовать оператор JOIN в SQL. JOIN позволяет объединять строки из двух или более таблиц на основе определенного условия.

    Прежде всего, вам необходимо определить, как вы хотите сгруппировать данные. Для этого вы можете использовать оператор GROUP BY в SQL. Например, если у вас есть таблица "orders" с колонками "order_id", "customer_id" и "total_amount", и таблица "customers" с колонками "customer_id" и "customer_name", вы можете сгруппировать данные по "customer_id" с помощью оператора GROUP BY:

    SELECT customers.customer_id, customer_name, SUM(total_amount) AS total_spent
    FROM customers
    JOIN orders ON customers.customer_id = orders.customer_id
    GROUP BY customers.customer_id, customer_name;

    SELECT customers.customer_id, customer_name, SUM(total_amount) AS total_spent FROM customers JOIN orders ON customers.customer_id = orders.customer_id GROUP BY customers.customer_id, customer_name;

    Этот запрос объединит таблицы "customers" и "orders" на основе совпадения значений в колонке "customer_id" и сгруппирует данные по уникальным значениям "customer_id". Далее он выведет идентификатор клиента, имя клиента и общую сумму, которую клиент потратил.

    Важно помнить, что при использовании оператора JOIN необходимо указать тип соединения (INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN) в зависимости от того, какие данные вы хотите получить. Кроме того, убедитесь, что у вас есть правильные индексы на соединяемых колонках для улучшения производительности запроса.

    Надеюсь, этот ответ поможет вам правильно присоединить таблицы на основе их сгруппированных данных. Если у вас есть дополнительные вопросы, не стесняйтесь задавать.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно