Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL [D6, IB6.x, ]


Malyatko ©   (2002-01-10 17:26:00) 

Здрайствуйте Господа! Пожалуйста, помогите. Есть база данных (*.gdb) в которой одна из таблиц имеет поле типа integer.
Как с помощю запроса или хранимой процедуры посчитать какое число встречается наиболие часто, и вернуть результат
подщета, вмести с числом которое считали в работающую програму.
C уважением Малятко.


Romkin   (2002-01-11 11:05:00) [1]

2Desdechados (10.01.02 20:15)
Зачем? count выдает >=0


Alexandr   (2002-01-11 06:54:00) [2]

SELECT FIELD1, COUNT(*) FROM TABLE1
GROUP BY FIELD1
order by 2 desc

и возьми первую строку

а если у тебя последний Firebird то

SELECT first 1 FIELD1, COUNT(*) FROM TABLE1
GROUP BY FIELD1
order by 2 desc
будет всего одна строка

а если у тебя Interbase 6.5 (скажи где взял) то

SELECT FIELD1, COUNT(*) FROM TABLE1
GROUP BY FIELD1
order by 2 desc
rows 1
будет всего одна строка



Desdechados   (2002-01-10 20:15:00) [3]

2 Romkin
инициализация max_count на минимальный отрицательный INT


asafr   (2002-01-10 17:53:00) [4]

Извиняюсь, если к IB6 не подходит. Я написал классический SQL без учета особенностей IB6, ибо совсем не силен в этом самом IB6.


Praco   (2002-01-10 17:48:00) [5]

To asafr: неправильно

Вот как нужно:
/* Внутри процедуры, понятно*/
for
select field1, COUNT(field1) from table1
group field1
order by 2 desc
into :max_field1, :count_field1
do begin
suspend;
exit;
end


Romkin   (2002-01-10 17:46:00) [6]

Рекомендую попробовать

create procedure sel_count
returns(max_count integer, max_Number integer)
as
declare variable counter integer;
declare variable number integer;
begin
max_count = 0;
for select count(numberField), NumberField
from NumberTable
group by NumberField
into :counter, :Number
do
if (max_count < conter) then
begin
max_count = counter;
max_number = number;
end
suspend;
end

Ну соотв, имена таблицы и полей - какие у тебя, и вроде работать будет...


asafr   (2002-01-10 17:30:00) [7]

SELECT FIELD1, COUNT(*) FROM TABLE1
GROUP BY FIELD1


Наверх

Титульная страница Поиск, карта сайта Написать письмо