![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подсчитать количество уникальных записей в таблице? [D5, ADO]
grusty © (2004-01-17 16:20:00)
Уважаемые, подскажите!
Как подсчитать количество уникальных записей в таблице?
Пытаюсь выполнить запрос:
with Query do begin
if Active then Close;
SQL.Text:="SELECT COUNT(DISTINCT Kod) FROM Table";
Open;
end;
где:
Kod - поле в таблице Table;
Table - таблица в базе Access;
однако появляется "Ошибка синтаксиса (пропущен оператор)...".
Что я не так делаю? Если такой синтаксис не допустим для Access, то есть ли другие варианты, кроме как перебор записей?
sniknik (2004-01-18 11:57:00) [1]
проверь скорость выполнения, только возьми табличку побольше и с большим количеством уникальных. ставлю на то что запрос из [3] отработает быстрее.
в общем если скорость важна и от запроса нужно только количество, то лутше пользоваться им ([3]).
grusty (2004-01-18 11:24:00) [2]
-->sniknik
Можно и так. Я же вышел из положения следующим образом:
with Query do begin
if Active then Close;
SQL.Text:="SELECT DISTINCT Kod FROM Table";
Open;
end;
Число Query.RecordCount и есть количество неповторяющихся записей.
Спасибо всем!
sniknik (2004-01-17 18:47:00) [3]
> Ему нужно количество неповторяющихся значений,
а..., тогда я не так понял
> Могу лишь сказать, что запрос автора с т.з. стандарта SQL абсолютно верен.
может быть,
в аксесе можно так
SELECT COUNT(*) AS [Kol-vo] FROM (SELECT DISTINCT Kod FROM Table)
Johnmen (2004-01-17 18:35:00) [4]
>sniknik © (17.01.04 18:25)
Нет. Не так. Ему нужно количество неповторяющихся значений,
а не количество каждого значения...
Могу лишь сказать, что запрос автора с т.з. стандарта SQL абсолютно верен.
sniknik (2004-01-17 18:25:00) [5]это из хелпа аксесс
...
Хотя аргумент выражение допускает выполнение вычислений над полем, функция Count возвращает просто количество записей. Это значение не зависит от того, какие данные содержатся в этих записях.
Функция Count не подсчитывает записи со значениями Null, если только аргумент выражение не содержит подстановочный знак звездочки (*). Если используются знаки звездочки, функция Count вычисляет общее количество записей, включая те, которые содержат пустые поля. Функция Count(*) работает значительно быстрее функции Count([Имя столбца]). Не следует заключать символ звездочки в прямые кавычки (" "). В следующем примере вычисляется количество записей в таблице «Заказы»:
SELECT Count(*)
AS ЧислоЗаказов FROM Заказы;
Если в аргументе выражение задано несколько полей, функция Count подсчитывает запись только в том случае, если хотя бы одно из полей не содержит значение Null. Если все указанные поля содержат значения Null, запись не подсчитывается. Для разделения имен полей используется символ (&). В следующем примере демонстрируется способ ограничения числа записей теми записями, для которых поле «ДатаИсполнения» или поле «СтоимостьДоставки» не содержат пустые значения:
SELECT
Count("ДатаИсполнения & СтоимостьДоставки")
AS [Not Null] FROM Заказы;
------------------------------------
уникальные значения
для одного
SELECT COUNT(*) FROM Table WHERE Kod = "значение"
для всех
SELECT Kod, COUNT(*) AS [Kol-vo] FROM Table GROUP BY Kod