Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Определить количество объектов на минимальном расстоянии от точки и агрегировать данные / 25 сообщений из 33, страница 1 из 2
21.07.2015, 10:50
    #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
21.07.2015, 11:08
    #39011992
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
Вопрос в том, как связать две таблицы?
...
Рейтинг: 0 / 0
21.07.2015, 11:13
    #39012005
iap
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
21.07.2015, 11:14
    #39012007
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
saxixВопрос в том, как связать две таблицы?
cross join-ом
Вы же ищете всех людей для всех городов
...
Рейтинг: 0 / 0
21.07.2015, 11:27
    #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
22.07.2015, 14:51
    #39013442
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
GlorysaxixВопрос в том, как связать две таблицы?
cross join-ом
Вы же ищете всех людей для всех городов
Нет. Получилось не так. Мне надо каждого человека привязать только к одному городу, но если расстояние до него превышает X - то без привязки
...
Рейтинг: 0 / 0
22.07.2015, 15:11
    #39013468
Диклевич Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
saxix,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

TSQL и в Африке TSQL))А кто тебе сказал что SQLite поддерживает TSQL?
Буква T была лишней.
...
Рейтинг: 0 / 0
22.07.2015, 18:13
    #39013825
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
С запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
...
Рейтинг: 0 / 0
22.07.2015, 18:14
    #39013827
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
saxixС запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?
...
Рейтинг: 0 / 0
22.07.2015, 18:16
    #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
22.07.2015, 18:19
    #39013835
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
saxixsaxixС запросами сталкиваюсь крайне редко. Решение данной задачи пока не понятно. Как строить коррелирующий подзапрос, что он должен выдавать. ДАйте наводку
Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?Ты должен сесть и вручную на этих тестовых данных посчитать что тебе нужно. Запомни как ты считал. Потом вырази это словами. И тогда сможешь написать запрос на SQL.
...
Рейтинг: 0 / 0
22.07.2015, 18:21
    #39013836
saxix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Определить количество объектов на минимальном расстоянии от точки и агрегировать данные
White Owlsaxixпропущено...

Так понимаю, что коррелирующий подзапрос должен выдать перечень всех расстояний от человека до города, мы его должны отсортировать и выбрать первый?Ты должен сесть и вручную на этих тестовых данных посчитать что тебе нужно. Запомни как ты считал. Потом вырази это словами. И тогда сможешь написать запрос на SQL.
Самое хре..е, что не на чем тестироваться. Скачал SQLite Administrator, но в нем нельзя выполнить скрипты, в который математические функции используются. Я с SQLite знаком только несколько дней
...
Рейтинг: 0 / 0
22.07.2015, 18:24
    #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
22.07.2015, 18:25
    #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
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Определить количество объектов на минимальном расстоянии от точки и агрегировать данные / 25 сообщений из 33, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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