SQL-запрос для поиска с самым высоким рейтингом

#mysql #sql

#mysql #sql

Вопрос:

SQL-запрос:

Цель:

Напишите SQL-запрос для получения адреса Phills Coffee с самым высоким рейтингом в формате адреса США.

 id   name         house   street          city          state  zip country rating
1   Best Buy        34    Main St        Carson           CA  98064 USA      9
2   Phills Coffee  4568   Sepulveda Blvd Torrance         CA  50833 USA      6
3   Starbucks        3    Ocean Blvd     Long Beach       WA  45093 USA      9
4   Phills Coffee   214   Carson St      Huntington Beach PA  89435 USA      4
  

Формат адресации в США (для людей за пределами США):

 http://bitboost.com/ref/international-address-formats/united_states/
  

Моя попытка:

 SELECT house, street, city,
       state,country,zip 
  FROM table 
 WHERE name="Phills Coffee" 
 ORDER BY rating DESC LIMIT 1
  

Я делаю неправильно? Или как я могу улучшить этот запрос?

Спасибо,

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

1. Я думаю, что нам нужно знать, что такое United States addressing format . Помните, что не все из США и, возможно, как и я, не знают, как это бывает!

2. Что должно произойти, если два местоположения привязаны к наивысшему рейтингу? Вы хотите вернуть 1 или 2 записи?

Ответ №1:

Формат адреса в США будет выглядеть так: 4568 Sepulveda Blvd, Торранс, Калифорния 50833 США.

Таким образом, ваш выбор будет выглядеть следующим образом: ВЫБЕРИТЕ CONCAT(дом, ‘ ‘, улица, ‘, ‘, город, ‘, ‘, штат, ‘ ‘, почтовый индекс, ‘ ‘, страна) ИЗ таблицы, ГДЕ name=»Phills Coffee» ЗАКАЗ ПО рейтингу DESC LIMIT 1

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

1. CONCAT() возвращает NULL, если какой-либо аргумент равен NULL. Если это используется для рассылки чего-либо, это, вероятно, не имеет значения, но если это для отображения COALESCE , может быть хорошей идеей

Ответ №2:

Вас попросили получить адрес в формате адреса США. Так что используйте это :

ВЫБЕРИТЕ CONCAT(улица,»,’страна’, ‘,’) …

Не знаю, что такое формат адресации в США, но используйте concat, чтобы это сделать. Ваше условие WHERE и порядок в порядке

Ответ №3:

Вам нужно будет использовать Max (рейтинг) Как наивысший рейтинг и группировка по для этого,

 SELECT house, street, city,
       state,country,zip,Max(rating)
FROM   table
Group  By house, street, city,
       state,country,zip 
Having name="Phills Coffee"  
ORDER  BY rating DESC LIMIT 1;
  

Я надеюсь, что у вас все получится, извините, если я не помог..

Ответ №4:

 SELECT house, street, city, state, country, zip, rating
FROM table WHERE rating = (SELECT MAX(rating) 
    from table WHERE name = "Phills Coffee") 
AND name= "Phills Coffee";
  

Это должно вернуть:

4568 Сепульведа бул. Торранс КАЛИФОРНИЯ 50833 США 6

Обратите внимание, что вы можете опустить рейтинг в первой строке этого запроса, и он вернет только адрес (№ 6, но все равно выберет информацию о максимальном рейтинге)