Форум: "Базы";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
ВнизКак подсчитать количество уникальных записей в таблице? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c