![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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