Ответить на вопрос в Teradata - PullRequest
1 голос
/ 16 апреля 2019

Запрос: 2. Перечислите 5 лучших покупателей (количество), которые больше всего потратили на День Мартина Лютера Кинга в 2000 году. (Подсказка: используйте SELECT TOP 5….)

SELECT TOP 5 Member_Dimension.Member_Key AS "Top 5 Members", Total_Scan_Amount As "Total Scan Amount"
FROM Item_Scan_Fact, Member_Dimension, Date_Dimension
WHERE Item_Scan_Fact.Member_Key = Member_Dimension.Member_Key
  AND Item_Scan_Fact.Transaction_Date_Key = Date_Dimension.Date_Key
  AND Date_Dimension.Year_Number = 2000
  AND Date_Dimension.Day_Description LIKE 'Martin';

Мой код не возвращает никаких значений, только пустая таблица. Я думаю, что источником ошибки является Day_Description, но я не уверен. Я верю в это, потому что когда я удаляю Day_Description = в предложении WHERE, код возвращает таблицу из 5 значений.

Это на терадате под UA_SAMSCLUB_STAR. Большое вам спасибо!

1 Ответ

1 голос
/ 16 апреля 2019

Ваша проблема - условие Date_Dimension.Day_Description LIKE 'Martin', которое возвращает только точное совпадение. Попробуйте Date_Dimension.Day_Description LIKE 'Martin%' вместо.

И, как уже заметил Тим, добавьте ORDER BY Total_Scan_Amount DESC, чтобы получить максимальные суммы.

...