Вопрос № 161997: Здравствуйте! Прошу вашей помощи в решении на первый взгляд простой задачи: у меня есть например таблица из 5 столбцов, все данные типа char(2) (см. приложение). Помогите мне составить запрос, что бы при указании первых трех значений...
Вопрос № 161.997
Здравствуйте!
Прошу вашей помощи в решении на первый взгляд простой задачи: у меня есть например таблица из 5 столбцов, все данные типа char(2) (см. приложение). Помогите мне составить запрос, что бы при указании первых трех значений, я получал элемент, который максимальное количество раз встречается во всех строчках таблицы при данных трех значениях. Например, из нижней таблицы, я задал первые три значения 1 2 2, в итоге должно получиться 4, т.к. оно максимальное количество раз встречается
при заданном наборе первых трех значений.
Заранее спасибо!
Приложение:
Отправлен: 04.03.2009, 12:52
Вопрос задал: Ole (статус: 3-й класс)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Hubbitus
Здравствуйте, Ole! >Помогите мне составить запрос, что бы при указании первых трех значений, я получал элемент, который максимальное количество раз встречается во всех строчках таблицы при данных трех значениях. На сколько я понял нужно посчитать количество строк, значения в первых 3х столбцах совпадают с данными, так?
SELECT COUNT(*) FROM tablename WHERE field1 = 1 AND field2 = 2 AND field3 = 3
Ответ отправил: Hubbitus (статус: 3-й класс)
Ответ отправлен: 04.03.2009, 13:42
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245018 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Челноков Виктор Альбертович
Здравствуйте, Ole! Попробуйте запрос
select top (1) t4 from ( SELECT t1, t2, t3, t4,count(t4)as t5 FROM Table_2 where t1='1' and t2='2' and t3='3' GROUP BY t1, t2, t3, t4) as tem order by t5 desc
Table_2 - название табл. t1, t2, t3, t4 - названия столбцов. sql 2005
#thank 245019 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: PVS@Lviv
Здравствуйте, Ole! Pre Scriptum: нужно, наверное, вводить правило "В вопросах по базам данных обязательно указывать СУБД" . От этого ответ может оказатся значительно проще.
Вот примерный синтаксис (должен работать в firebird, с небольшими изменениями в Sybase AS* и DB2 и, возможно, MSSQL):
WITH subq_a (f1, f2, f3 ,f4, f4c) AS ( SELECT f1,f2,f3,f4,count(all *) from tab group by f1,f2,f3,f4), subq_b (f1, f2, f3
,f4, f4c) AS ( SELECT f1,f2,f3,f4,count(all *) from tab group by f1,f2,f3,f4) SELECT a.f1,a.f2,a.f3,a.f4 FROM subq_a a, subq_b b where a.f1=b.f1 and a.f2=b.f2 and a.f3=b.f3 group by a.f1,a.f2,a.f3,a.f4 having a.f4c=max(b.f4c)
Ответ отправил: PVS@Lviv (статус: Профессионал) Украина, Львов ---- Ответ отправлен: 04.03.2009, 14:02
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245020 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Digitall
Здравствуйте, Ole! плохо что в вопросе не указана база данных. привожу пример для оракла:
Приложение:
Ответ отправил: Digitall (статус: 1-й класс)
Ответ отправлен: 04.03.2009, 14:47
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245024 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает: Ross
Здравствуйте, Ole!
Вот решение задачи для MS-SQL.
Приложение:
--------- Доступно только то, что видимо (c) Б. Керниган
Ответ отправил: Ross (статус: Практикант)
Ответ отправлен: 07.03.2009, 19:03
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 245310 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.