Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: CL | DM;

Вниз

Как подсчитать количество уникальных записей в таблице?   Найти похожие ветки 

 
grusty   (2004-01-17 16:20) [0]

Уважаемые, подскажите!

Как подсчитать количество уникальных записей в таблице?
Пытаюсь выполнить запрос:

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-17 18:25) [1]

это из хелпа аксесс
...

Хотя аргумент выражение допускает выполнение вычислений над полем, функция 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


 
Johnmen ©   (2004-01-17 18:35) [2]

>sniknik © (17.01.04 18:25)

Нет. Не так. Ему нужно количество неповторяющихся значений,
а не количество каждого значения...
Могу лишь сказать, что запрос автора с т.з. стандарта SQL абсолютно верен.


 
sniknik ©   (2004-01-17 18:47) [3]

> Ему нужно количество неповторяющихся значений,
а..., тогда я не так понял

> Могу лишь сказать, что запрос автора с т.з. стандарта SQL абсолютно верен.
может быть,
в аксесе можно так
SELECT COUNT(*) AS [Kol-vo] FROM (SELECT DISTINCT Kod FROM Table)


 
grusty   (2004-01-18 11:24) [4]

-->sniknik

Можно и так. Я же вышел из положения следующим образом:

with Query do begin
if Active then Close;
SQL.Text:="SELECT DISTINCT Kod FROM Table";
Open;
end;

Число Query.RecordCount и есть количество неповторяющихся записей.

Спасибо всем!


 
sniknik ©   (2004-01-18 11:57) [5]

проверь скорость выполнения, только возьми табличку побольше и с большим количеством уникальных. ставлю на то что запрос из [3] отработает быстрее.
в общем если скорость важна и от запроса нужно только количество, то лутше пользоваться им ([3]).



Страницы: 1 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-29566
syte_ser78
2004-01-20 16:43
2004.02.10
Кол-во логических дисков


14-29564
Knight
2004-01-20 13:46
2004.02.10
Радиотелефон - Premier magic 100...


3-29244
Aleksandr
2004-01-15 13:44
2004.02.10
Как индексировать по значениям Look-Up-полей?


14-29526
Пользователь
2004-01-20 20:04
2004.02.10
Сеть


3-29251
The X
2004-01-09 22:44
2004.02.10
Пересылка данных из БД на удаленный сервер сети.