Задать вопрос
doublench21
@doublench21

Можно ли это сделать в один запрос?

Есть таблица такого типа:
id1 | id2 | dist
799 | 846 | 284.971
846 |799 |284.971
732 | 465 | 269.441
465 | 732 | 269.441
602 | 732 | 268.122
...

Можно ли добиться следующего в один запрос ?
1. Взять все записи, где dist < 200;
2. Найти из id1 наиболее часто встречающийся id и оставить все записи, где этот id встречается по обоим полям.
  • Вопрос задан
  • 152 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@Ramallah
Если я верно все понял, то как вариант:

SELECT * FROM 
	test,
	(SELECT id1, COUNT(id1) cnt FROM
		(SELECT * FROM test WHERE dist<200) s1
	 GROUP BY id1 
	 ORDER BY cnt DESC 
	 LIMIT 1) cnt2
WHERE test.id1=cnt2.id1
OR test.id2=cnt2.id1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы