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

#teradata

#teradata

Вопрос:

Запрос: 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 значений.

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

Комментарии:

1. Обратите внимание, что использование TOP without ORDER BY довольно бессмысленно, потому что неясно, какие 5 лучших записей вы хотите вернуть.

2. Я хочу вернуть 5 лучших покупателей, которые потратили больше всего. Итак, я размещаю заказ по Member_Key или по общему объему сканирования? Я действительно в замешательстве.

3. Я не знаю, но если вы действительно возвращаете нулевые записи, тогда у вашего запроса может быть какая-то другая проблема.

Ответ №1:

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

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

Комментарии:

1. as Tim already noted … за самоцитирование вы проголосовали в моей книге 1.

2. @Cupcakke345: не работает , означает пустой результирующий набор? В настоящее время выполняется поиск строк, начинающихся с ‘Martin’, попробуйте LIKE '%Martin%' выполнить поиск строк, содержащих ‘Martin’