Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизSQL запрос Найти похожие ветки
← →
maxi © (2004-06-09 08:44) [0]помогите, пожалуйста, надо сделать запрос, который найдет 6 – ть клиентов, которые встречаются наибольшее количество раз в таблице из 6 столбцов???
← →
Johnmen © (2004-06-09 09:02) [1]
SELECT клиент, COUNT(*) FROM Table
GROUP BY клиент
ORDER BY 2 DESC
Первые 6 записей в НД - твои...:)
← →
Соловьев © (2004-06-09 09:14) [2]
> [1] Johnmen © (09.06.04 09:02)
а по остальным 5 столбцам? :)
← →
Sandman25 © (2004-06-09 09:54) [3]select C.id, sum(
case when L.id1 = C.id then 1 else 0 end +
case when L.id2 = C.id then 1 else 0 end +
case when L.id3 = C.id then 1 else 0 end +
case when L.id4 = C.id then 1 else 0 end +
case when L.id5 = C.id then 1 else 0 end +
case when L.id6 = C.id then 1 else 0 end
)
from clients C,
links L
where L.id1 = C.id
or L.id2 = C.id
or L.id3 = C.id
or L.id4 = C.id
or L.id5 = C.id
or L.id6 = C.id
GROUP BY 1
ORDER BY 2 DESC
Если можно заменить case на Cast(L.idi=C.id as Integer), то еще лучше :)
← →
Johnmen © (2004-06-09 09:55) [4]>Sandman25 © (09.06.04 09:54) [3]
case в IB ?
:)
← →
Соловьев © (2004-06-09 09:55) [5]
> case when L.id6 = C.id then 1 else 0 end
в ИБ такого нет - это ФБ
> Cast(L.idi=C.id as Integer),
такое не прокатит
← →
Sandman25 © (2004-06-09 10:04) [6]А так?
Sum(
Min(Abs(L.id1 - C.id), 1) +
Min(Abs(L.id2 - C.id), 1) +
...
)
Или Min и Abs тоже нет?
← →
Sandman25 © (2004-06-09 10:04) [7]Точнее
Sum(6 -
(Min(Abs(L.id1 - C.id), 1) +
Min(Abs(L.id2 - C.id), 1) +
...
)
)
← →
Johnmen © (2004-06-09 10:06) [8]>Sandman25 © (09.06.04 10:04) [6]
>Или Min и Abs тоже нет?
min/max - стандартизованные агрегатные ф-ии
abs - нет
← →
Sandman25 © (2004-06-09 10:08) [9][8] Johnmen © (09.06.04 10:06)
Это другой min, c нсколькими параметрами. Min(1,2,3) = 1
Но если abs нет, то min уже не важен :)
← →
Johnmen © (2004-06-09 10:11) [10]А вот интересно, парсер+анализатор, видимо, "понимают" разницу между min-агр.ф-ей и min-UDF-ф-ей...
← →
Sandman25 © (2004-06-09 10:15) [11]Я условно назвал эту функцию Min, в реальности она может называться иначе. Насколько я помню, в MS SQL она действительно называется иначе.
А что касается вопроса из [10], то наверное, по числу параметров различает. В некоторых СУБД вообще можно завести кучу ХП с одним названием, но разными типами или числом параметров.
← →
maxi © (2004-06-10 13:01) [12]А поточнее можна!!!! и что луче
← →
Sandman25 © (2004-06-10 15:00) [13][12] maxi © (10.06.04 13:01)
Лучше переделать структуру БД. Я так понимаю, что это 6 видов ролей клиента. Если добавится 7, то придется изменять таблицу. Лучше сразу хранить в виде (клиент, роль). Тогда [1] Johnmen © (09.06.04 09:02)
вполне подойдет.
← →
maxi © (2004-06-11 13:36) [14]нет там 45 клиентов, под номерами от 1 до 45, в таблице си 6 столбцов, и где-то 540 строк, из них надо найти 6 которые встречаются наибольшее количество раз
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.035 c