Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.034 c
6-1084205797
Alexey8000
2004-05-10 20:16
2004.07.11
Создание простешего сокетного сервера! Помомгите начинающему!


1-1088423777
AlexanderSK
2004-06-28 15:56
2004.07.11
Сохранение строки в TStream


4-1085873125
vovchik_29
2004-05-30 03:25
2004.07.11
Свой раздел в pop-up рабочего стола


1-1087820527
Klerk
2004-06-21 16:22
2004.07.11
Про Excel


14-1087541950
Andryk
2004-06-18 10:59
2004.07.11
Однако как меня вчерась хорваты порадовали.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский