Главная страница
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.017 c
4-29672
Chris
2003-12-03 18:54
2004.02.10
Передать русккий текст в Excel


6-29514
Илайдж
2003-10-14 10:56
2004.02.10
Удаленное завершение работы приложения...


7-29629
Floppy
2003-11-24 10:08
2004.02.10
Расшарить ресурс на своем компе для пользователей локальной сети


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


14-29569
Ezik
2004-01-20 10:43
2004.02.10
Смена домашней страницы