Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-29374
Devel
2004-01-28 19:38
2004.02.10
как общаться с cервисом ?


11-29294
Юрий
2003-05-18 18:22
2004.02.10
Как в RichEdit добавить свойство WordWrap?


6-29501
Samael6
2003-11-19 13:53
2004.02.10
Настройки TCP/IP


14-29559
Agent13
2004-01-20 15:39
2004.02.10
Delphi 7 Trial


1-29352
КомофОнСамый
2004-01-28 20:04
2004.02.10
прочитать версию о файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский