Oracle как узнать количество возвращаемых строк select
Перейти к содержимому

Oracle как узнать количество возвращаемых строк select

  • автор:

COUNT ФУНКЦИЯ

Oracle/PLSQL функция COUNT возвращает количество возращенных запросом строк.

Синтаксис

Синтаксис Oracle/PLSQL функции COUNT:

ИЛИ синтаксис функции COUNT с группировке результатов по одному или нескольким столбцам:

Параметры или аргументы

expression1 , expression2 , . expression_n Выражения, которые не инкапсулированы в функции COUNT и должны быть включены в оператор GROUP BY в конце SQL предложения.

aggregate_expression — это столбец или выражение, чьи ненулевые значения будут учитываться.

tables — таблицы, из которых вы хотите получить записи. В оперторе FROM должна быть указана хотя бы одна таблица.

WHERE conditions — необязательный. Это условия, которые должны быть соблюдены для выбранных записей.

Функция COUNT возвращает numeric значение.

Включает только NOT NULL значения

Не все это понимают, но функция COUNT будет включать в счет только те записи, в которых значение выражения COUNT (expression) НЕ равно NULL. Когда выражение содержит значение NULL, оно не включается в вычисления COUNT.

Давайте рассмотрим пример функции COUNT, который демонстрирует, как значения NULL оцениваются функцией COUNT.

Например, если у вас есть следующая таблица с названием suppliers :

supplier_id supplier_name state
1 IBM CA
2 Microsoft
3 NVIDIA

И если вы запустите следующий оператор SELECT, который использует функцию COUNT:

Вычислить количество строк в запросе Oracle

Есть ли простой способ узнать количество строк, возвращаемых запросом Oracle SQL?

Я пробовал count разными способами, но ни один из них не помог. Кажется, это помогает

Но есть ли что-то простое, например nrow в R или .shape в Python?

2 ответа

Мне просто было интересно, как лучше всего проверить размер представления (. ) Мне не нужно отображать все представление, мне нужно знать только количество строк.

В этом случае count(*) кажется способом для этого. Чисто и просто

(Вы использовали предложение order by ; оно обещает быть медленнее, чем запрос без него.)

В качестве альтернативы, если бы это была таблица (а не представление), вы могли бы использовать параметр очень быстро — запрос user_tables :

Сколько на самом деле строк в этой таблице?

Не точно то же самое. Почему? Потому что вы должны собирать статистику:

Теперь эти значения совпадают:

Это просто означает, что вы должны регулярно собирать (схему) статистику — например, ежедневно. Тогда у вас будет довольно много информации о количестве строк. Но, чтобы быть уверенным , сколько строк у вас действительно есть, еще раз — select count(*) .

Oracle как узнать количество возвращаемых строк select

Analytic Functions for information on syntax, semantics, and restrictions

COUNT returns the number of rows returned by the query. You can use it as an aggregate or analytic function.

If you specify DISTINCT , then you can specify only the query_partition_clause of the analytic_clause . The order_by_clause and windowing_clause are not allowed.

If you specify expr , then COUNT returns the number of rows where expr is not null. You can count either all rows, or only distinct values of expr .

If you specify the asterisk (*), then this function returns all rows, including duplicates and nulls. COUNT never returns null.

Before performing a COUNT (DISTINCT expr ) operation on a large amount of data, consider using one of the following methods to obtain approximate results more quickly than exact results:

Set the APPROX_FOR_COUNT_DISTINCT initialization parameter to true before using the COUNT (DISTINCT expr ) function. Refer to Oracle Database Reference for more information on this parameter.

Use the APPROX_COUNT_DISTINCT function instead of the COUNT (DISTINCT expr ) function. Refer to APPROX_COUNT_DISTINCT.

«About SQL Expressions» for information on valid forms of expr and Aggregate Functions

Appendix C in Oracle Database Globalization Support Guide for the collation determination rules, which define the collation COUNT uses to compare character values for the DISTINCT clause

The following examples use COUNT as an aggregate function:

The following example calculates, for each employee in the employees table, the moving count of employees earning salaries in the range 50 less than through 150 greater than the employee’s salary.

Выполнить SQL-запрос и одновременно найти количество возвращенных записей

Я также хочу знать количество записей, возвращаемых запросом.

Как мне изменить запрос?

Добавьте новый столбец, count(*) чтобы вернуть количество строк, соответствующих вашему запросу (если у вашего провайдера еще нет способа получить количество возвращенных строк). — Brad Christie

2 ответы

Я знаю, что в SQL Server, чтобы получить количество строк, затронутых оператором SQL, вы должны вернуть @@rowcount из вашего запроса. В Oracle должно быть что-то подобное, например sql%rowcount я думаю, в соответствии с этим сообщением: http://www.dbasupport.com/forums/showthread.php?t=20077

ответ дан 23 мая ’17, 12:05

Это другое дело. HanuAthena спрашивает о SELECT, а не UPDATE. — Илья Коган

Допустим, запрос возвращает N строк. Вы хотите, чтобы число N добавлялось в КАЖДУЮ строку?

Полагаю, что нет. Тогда вам понадобится отдельный запрос для возврата количества строк в результатах вашего запроса. Сделать это можно так:

Кстати, между subQuery1 и subQuery2 лучше использовать JOIN, а не просто запятую. JOIN сделает ваш запрос более читабельным.

есть предложение GROUP BY, которое определяет количество записей. Неа. Я не хочу, чтобы число N добавлялось к каждой строке. Мне просто нужно КОЛИЧЕСТВО записей, возвращенных при выполнении запроса. — Я

Так что используйте запрос, который я вам дал, вот что он делает. — Илья Коган

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками sql oracle oracle9i or задайте свой вопрос.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *