Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
14-1087797585
DimKa
2004-06-21 09:59
2004.07.11
Россия - Греция : 2-1


1-1088057321
www.shegeda.by.ru
2004-06-24 10:08
2004.07.11
Утечка GDI ресурсов при рисовании по TListView.Canvas


1-1088170693
BBoost
2004-06-25 17:38
2004.07.11
Опять Edit


1-1088164174
Шишкин Илья
2004-06-25 15:49
2004.07.11
Проверка строки по маске


3-1087280598
denis24
2004-06-15 10:23
2004.07.11
query




   Наверх