Главная страница
    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.035 c
14-1088052586
Lm
2004-06-24 08:49
2004.07.11
Материнская плата ASUS


1-1088067133
legioner
2004-06-24 12:52
2004.07.11
копирование


14-1087498130
Djon007
2004-06-17 22:48
2004.07.11
Кто нибуть знает где скачать Delphi 3 или 4?????


4-1086023452
Manulo
2004-05-31 21:10
2004.07.11
Запуск команды от имени другого пользователя


1-1087972744
Relaxxx
2004-06-23 10:39
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский