[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: SQL MAX
maruo
Можно ли составить такой запрос.

НУжно вытащить Имя города, Колличество Квартир, Цена за час(минимальная), изображение города,
из таблиц.... . Где Колличество квартир в Городе имеет наибольшее значение,
И всего 8 городов должно получиться. Где У каждого города по 1й квартире и сминимальной ценой за час



Чтото набросал но он с ошибкой не врублюсь как еще решить можно
SELECT c.city_name,COUNT(a.city_id) as count,a.price_hour,c.city_img FROM apartment a 
LEFT JOIN city c USING(city_id)
WHERE a.price_hour = (SELECT MIN(price_hour) FROM apartment)
AND COUNT(a.city_id) = (SELECT MAX( COUNT(city_id) FROM apartment) )
GROUP BY news_id

LIMIT 8


ну или хотябы подскажите как сделать такое
остальное я решу

AND COUNT(city_id)  = (SELECT MAX( COUNT(city_id) FROM apartment) )
Игорь_Vasinsky
SELECT MAX( COUNT(city_id) FROM apartment  group by city_id limit 1 order by COUNT(city_id) DESC)

не ?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
maruo
Игорь_Vasinsky, Неа и ваш вариант И мой ни в какую.

SELECT news_id,city_id, COUNT(city_id), price_hour FROM apartment 

WHERE price_hour = (SELECT MIN( price_hour ) FROM apartment)
GROUP BY news_id
LIMIT 8



Такой вариант вытаскивает 8 квартир, но они все с 1го города. Нужно с каждого города по 1му

Вот блин как вытащить то только 1 город, вытаскиваются все по порядку.
А нужно только из каждого города по 1му полю С самым максимальным количеством городов.
kaww
maruo, что-то из описания не очень понятно, какой результат должен быть? По одной квартире с минимальным ценником из восьми городов где квартир больше всего, и количество квартир в этих городах (будет одинаковым для всех по условию)?
maruo
kaww
Нет кол -во квартир в городах разные в таблице.

Нужно Взять 8 городов. С максимальным числом квартир в Этом городе.
И минимальным ценником на эту квартиру
kaww
select c.*, count(1) as numebr_of_appartament, min(a.price_hour) as min_price
from city as c
inner join apartment as a on c.city_id=a.city_id
group by c.city_id
order by cnt desc
limit
8
maruo
kaww, Сейчас сверю, точно ли те значения получаю:)

Вот же уровень) Я 4 часа мучал запрос)

А как это работает? count(1)
T1grOK
Цитата (kaww @ 27.05.2016 - 08:11)
select c.*, count(1) as numebr_of_appartament, min(a.price_hour) as min_price
from city as c
inner join apartment as a on c.city_id=a.city_id
group by c.city_id
order by cnt desc
limit
8

LIMIT сработает раньше группировки, так что запрос некорректно отработает.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
maruo
T1grOK, Хм ну я вроде сверил вытащилось то что надо, хотя не буду спорить
kaww
Цитата (maruo @ 27.05.2016 - 15:16)
А как это работает? count(1)

кстати, стоит заменить на count(*) или с primary key, что будет работать быстрее чем count(1)
Цитата (T1grOK @ 27.05.2016 - 15:28)
LIMIT сработает раньше группировки

нет
maruo
kaww, А как все же работает count(1) с единицей внутри? Как то по другому?
T1grOK
Цитата (kaww @ 27.05.2016 - 08:39)
нет

Да. LIMIT выполняется в процессе выборки, GROUP BY выполняется на основании полученных записей.

P.S. А, все. Не обратил внимание на сортировку..

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
maruo
Народ, ну можно еще ответ получить на один вопрос.
Такая Задача , Сайт на поддоменах.
ТОесть каждый город на поддоменах.
А у меня MVC. В роутере менять ?
Просто там еще Надо что бы УРл был на русском языке.
А функции нельзя вызывать же русскими буквами
kaww
Цитата (maruo @ 27.05.2016 - 15:40)
А как все же работает count(1) с единицей внутри?

то же самое что и count(*), за исключением простых запросов без where для myisam т.к. это значение хранится движком. Но это не случай, обсуждаемый в этой теме. описано тут http://dev.mysql.com/doc/refman/5.7/en/gro...#function_count
Цитата
This optimization applies only to MyISAM tables only, because an exact row count is stored for this storage engine and can be accessed very quickly.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.