powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
25 сообщений из 33, страница 1 из 2
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39011968
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите.
Есть таблица
Код: sql
1.
2.
3.
4.
5.
6.
create сity_tb --"данные" города 
{
	name varchar(50), --название города
	x int, --координата X города
	y int  --координата Y города
}



и таблица
Код: sql
1.
2.
3.
4.
5.
6.
create people_tb --данные человека
{
	x int, --координата X места жительства человека
	y int,--координата Y места жительства человека
	year int -- возраст
}




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
insert into сity_tb(name, x, y) values("Петрово", 10, 100);
insert into сity_tb(name, x, y) values("Васино", 20, 200);
insert into сity_tb(name, x, y) values("Борисов", 30, 300);

insert into people_tb(x, y, year) values(11, 101, 12);
insert into people_tb(x, y, year) values(11, 101, 13);
insert into people_tb(x, y, year) values(15, 101, 14);
insert into people_tb(x, y, year) values(11, 110, 12);

insert into people_tb(x, y, year) values(21, 198, 54);
insert into people_tb(x, y, year) values(19, 201, 57);
insert into people_tb(x, y, year) values(25, 198, 55);
insert into people_tb(x, y, year) values(21, 209, 54);

insert into people_tb(x, y, year) values(30, 300, 56);
insert into people_tb(x, y, year) values(31, 300, 56);
insert into people_tb(x, y, year) values(35, 300, 56);
insert into people_tb(x, y, year) values(30, 310, 56);




Пусть координаты выражаются в километрах (на плоскости по каждой из осей от нулевой точки). Требуется для каждого города определить средний возраст людей, проживающих не далее X километров от города. Пусть для теста X будет 5 км.
Соответственно - выражение для определения расстояния sqrt(pow((сity_tb.x - people_tb.x), 2) + pow((сity_tb.y - people_tb.y),2))
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39011992
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос в том, как связать две таблицы?
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39012005
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixВопрос в том, как связать две таблицы?Сами же написали:
Код: sql
1.
ON sqrt(power((сity_tb.x - people_tb.x), 2) + power((сity_tb.y - people_tb.y),2)) <= 5
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39012007
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixВопрос в том, как связать две таблицы?
cross join-ом
Вы же ищете всех людей для всех городов
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39012035
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapsaxixВопрос в том, как связать две таблицы?Сами же написали:
Код: sql
1.
ON sqrt(power((сity_tb.x - people_tb.x), 2) + power((сity_tb.y - people_tb.y),2)) <= 5


вот я .....Спасибо
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013442
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlorysaxixВопрос в том, как связать две таблицы?
cross join-ом
Вы же ищете всех людей для всех городов
Нет. Получилось не так. Мне надо каждого человека привязать только к одному городу, но если расстояние до него превышает X - то без привязки
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013468
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxix,

к одному - это к какому? Что если несколько городов удовлетворяют условию? Каков критерий единственности?

В любом случае - OUTER APPLY + TOP(1) + ORDER BY
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013519
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александрsaxix,

к одному - это к какому? Что если несколько городов удовлетворяют условию? Каков критерий единственности?

В любом случае - OUTER APPLY + TOP(1) + ORDER BY
К одному - до которого расстояние минимально, но если оно превышает величину X, то ни к какому нельзя относить
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013523
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александрsaxix,

к одному - это к какому? Что если несколько городов удовлетворяют условию? Каков критерий единственности?

В любом случае - OUTER APPLY + TOP(1) + ORDER BY
OUTER APPLY моей СУБД не поддерживается
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013543
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxix,

тогда - коррелированный подзапрос + TOP(1) + ORDER BY.
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013548
Диклевич Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixOUTER APPLY моей СУБД не поддерживается

тогда уж и версию SQL Server указать надо.
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013549
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диклевич Александрsaxix,

тогда - коррелированный подзапрос + TOP(1) + ORDER BY.Если APPLY нет, значит, SQL2000.
Тогда TOP 1 без скобок надо писать
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013614
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
iapЕсли APPLY нет, значит, SQL2000.
Тогда TOP 1 без скобок надо писать
это если вообще SQL Server.
загадочное "моя СУБД" + фигурные скобки в create table + формула с pow
--> это мало похоже на SQL Server,
а в этой ветке и про Аксесс спрашивают и даже про qlikview
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013623
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
o-oiapЕсли APPLY нет, значит, SQL2000.
Тогда TOP 1 без скобок надо писать
это если вообще SQL Server.
загадочное "моя СУБД" + фигурные скобки в create table + формула с pow
--> это мало похоже на SQL Server,
а в этой ветке и про Аксесс спрашивают и даже про qlikview
sqlite )))
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013635
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixo-oпропущено...

это если вообще SQL Server.
загадочное "моя СУБД" + фигурные скобки в create table + формула с pow
--> это мало похоже на SQL Server,
а в этой ветке и про Аксесс спрашивают и даже про qlikview
sqlite )))Тогда что Вы хотите от нас?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013784
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapsaxixпропущено...

sqlite )))Тогда что Вы хотите от нас?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
TSQL и в Африке TSQL))
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013820
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixiapпропущено...
Тогда что Вы хотите от нас?

Модератор: Тема перенесена из форума "Microsoft SQL Server".
TSQL и в Африке TSQL))А кто тебе сказал что SQLite поддерживает TSQL?
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013823
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlsaxixпропущено...

TSQL и в Африке TSQL))А кто тебе сказал что SQLite поддерживает TSQL?
Буква T была лишней.
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013825
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013827
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixС запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013831
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select name, avg(year)
from сity_tb
left join people_tb on (сity_tb.x - people_tb.x)*(сity_tb.x - people_tb.x) + (сity_tb.y - people_tb.y)*(сity_tb.y - people_tb.y) < 25
group by name
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013835
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixsaxixС запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?Ты должен сесть и вручную на этих тестовых данных посчитать что тебе нужно. Запомни как ты считал. Потом вырази это словами. И тогда сможешь написать запрос на SQL.
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013836
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlsaxixпропущено...

Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?Ты должен сесть и вручную на этих тестовых данных посчитать что тебе нужно. Запомни как ты считал. Потом вырази это словами. И тогда сможешь написать запрос на SQL.
Самое хре..е, что не на чем тестироваться. Скачал SQLite Administrator, но в нем нельзя выполнить скрипты, в который математические функции используются. Я с SQLite знаком только несколько дней
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013841
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
Код: sql
1.
2.
3.
4.
select name, avg(year)
from сity_tb
left join people_tb on (сity_tb.x - people_tb.x)*(сity_tb.x - people_tb.x) + (сity_tb.y - people_tb.y)*(сity_tb.y - people_tb.y) < 25
group by name


Это не то. Во-первых...в формуле рассчета расстояния есть вычисление корня квадратного из (сity_tb.x - people_tb.x)*(сity_tb.x - people_tb.x) + (сity_tb.y - people_tb.y)*(сity_tb.y - people_tb.y) .
Во-вторых. Даже в этот скрипт добавить правильную функцию рассчета расстояний - на выходе будут все города, у которых расстояние будет меньше 25, а мне нужно найти город, до которого расстояние минимально и не превышает 25, а если превышает - в выборку входить не должен
...
Рейтинг: 0 / 0
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
    #39013843
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxixWhite Owlпропущено...
Ты должен сесть и вручную на этих тестовых данных посчитать что тебе нужно. Запомни как ты считал. Потом вырази это словами. И тогда сможешь написать запрос на SQL.
Самое хре..е, что не на чем тестироваться. Скачал SQLite Administrator, но в нем нельзя выполнить скрипты, в который математические функции используются. Я с SQLite знаком только несколько днейНе надо скачивать всякую фигню.

Скачивать отсюда: http://sqlite.org/download.html и использовать консоль: sqlite3
Читать тут: http://www.sql.ru/forum/983207/kak-prosit-pomoshhi-s-zaprosom
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]