powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ступор в построении запроса
11 сообщений из 11, страница 1 из 1
Ступор в построении запроса
    #39842273
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, базы не мой основной профиль, застрял на одном вопросе, предполагаю что все должно быть просто но никак не соберусь с мыслями чтобы реализовать.

Допустим есть
Код: sql
1.
CREATE TABLE gifts(sender varchar, recipient varchar, text varchar)


Мне нужно сгруппировать данные таким образом, чтобы узнать какая пара между собой сделала больше всего подарков, т.е. мне надо sum(*) where a.sender = b.recipient or a.recipient = b.sender

Я написал набрсоок поделки, но он нещадно тупит.
Код: sql
1.
select count(*), a.recipient as rec, a.sender as sen from (select sender, recipient from gifts) as a,(select sender, recipient from gifts) as b where a.sender = b.recipient or a.recipient = b.sender group by rec,sen order by 1


Так вот, может кто знает как правильно называются такие запросы, я даже сформулировать нормально не могу, чтобы погуглить. Буду рад любой помощи(а работающему запросу безмерно рад)
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842275
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
база Postgres, количество записей пока полмиллиона, медленно растет, но не сильно, это данные где-то за 10 лет
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842286
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
group by min(sender,recipient), mах(sender,recipient)


Не помню точно название функции, но идею ты должен понять.
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842287
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил
Код: sql
1.
group by LEAST(sender,recipient), GREATEST(sender,recipient)
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842288
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, используются ли они для нечисловых переменных.
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842289
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навскидку как-то так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
CREATE TABLE gifts(sender varchar, recipient varchar)
INSERT INTO gifts (sender, recipient)
VALUES
(1, 2)
,(1, 3)
, (1, 4)
, (2, 3)
, (3, 1)
, (3, 4)
, (3, 2)

SELECT
	[One]
	, [Two]
	, COUNT(*) AS N
FROM (
SELECT
	sender AS [One]
	, recipient AS [Two]
FROM gifts
UNION ALL
SELECT
	recipient AS [One]
	, sender AS [Two]
FROM gifts
) t
WHERE [One] > [Two]
GROUP BY [One], [Two]
ORDER BY N DESC

DROP TABLE gifts
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842290
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ребята, все взлетело. А я 3 часа никак не мог сообразить)
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842298
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select * from
(
select sender, resipient, cnt, max(cnt) over () m
from
(
select sender, resipient, count(*) cnt from gifts
group by sender, resipient
)
)
where cnt = m
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842300
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку.
Запрос проверен в Оракле. Но Постгри вроде имеет родственный язык БД.
Запрос вернет несколько записей, если несколько пар сделали больше всего подарков, но совпадают между собой. Например, несли наибольшее число 10. И две пары сделали по 10, то оде окажутся в результате.
Запрос имеет и аналитическую ф-ю и групповую. Но они обе для аналитических отчетов.
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842303
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вдогонку.
На основном компе буфер обмена с браузером не работает (Вин 10), на втором не все клавиши нажимаются. Поэтому один ответ пришлось разбить на два.
...
Рейтинг: 0 / 0
Ступор в построении запроса
    #39842306
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел что подкрутить чтобы буфер заработал. Не совсем как бы очевидно: пришлось включить журнал буфера обмена. Ну не гады они там?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Ступор в построении запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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