#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, но все равно выберет информацию о максимальном рейтинге)