#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
withoutORDER 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’