Нахождение максимального (дата) независимо от других столбцов - PullRequest
0 голосов
/ 19 июня 2019

У меня есть таблица ниже, как

Table1

Id | Name  | Date
1     A      11.12.2018
2     B      12.12.2018
3     C      13.01.2017
4     D      15.06.2019
5     E      21.05.2019

Table2

Id | Marks
1     50
2     79
3     90
4     95
5     92

Я хочу выбрать все записи, имеющие отметки> 80, и я хочу отобразить максимальную (дату) для всех выбранных записей. Ожидаемый результат должен быть как

Id | Name | Date
3    C      15.06.2019
4    D      15.06.2019
5    E      15.06.2019

Немного с ограниченными возможностями, поскольку я новичок в sql и teradata. Цените свое время и помощь

Заранее спасибо.

Это запрос, который я устал,

SELECT a.Id, a.name , max(a.date)
FROM Table1 as a , Table2 as b
WHERE a.Id  = b.Id 
       AND b.Marks > 80

1 Ответ

1 голос
/ 19 июня 2019

Используйте MAX в качестве аналитической функции для всей таблицы, а также исправьте синтаксис соединения:

SELECT
    a.Id,
    a.name,
    MAX(a.date) OVER () AS max_date
FROM Table1 a
INNER JOIN Table2 b
    ON a.Id = b.Id 
WHERE
    b.Marks > 80;

Альтернативой вышеупомянутому подходу будет использование подзапроса для поиска максимальной даты повся таблица:

SELECT
    a.Id,
    a.name,
    (SELECT MAX(a.date)
     FROM Table1 a INNER JOIN Table2 b ON a.Id = b.id
     WHERE b.Marks > 80) AS max_date
FROM Table1 a
INNER JOIN Table2 b
    ON a.Id = b.Id 
WHERE
    b.Marks > 80;
...