0

特定のクエリでrownum条件なしで返される行数を知りたい:

SELECT columns
, [number of rows before applying rownum] AS numberofrows
FROM tables
WHERE conditions
AND rownum < 100

サブクエリを使わなくても可能ですか?

4

3 に答える 3

1

COUNT()ネストされたクエリでの分析バージョンを使用できます。たとえば、次のようになります。

SELECT * FROM
(
  SELECT table_name,
    COUNT(*) OVER() AS numberofrows
  FROM all_tables
  WHERE owner = 'SYS'
  ORDER BY table_name
)
WHERE rownum < 10;

rownumフィルターの前にオーダーバイを適用して一貫した結果を得るには、とにかくネストする必要があります。そうしないと、ランダムな(っぽい)行のセットが得られます。

rownum分析ROW_NUMBER()関数に置き換えることもできます。

SELECT table_name, cnt FROM
(
  SELECT table_name,
    COUNT(*) OVER () AS numberofrows,
    ROW_NUMBER() OVER (ORDER BY table_name) AS rn
  FROM all_tables
  WHERE owner = 'SYS'
)
WHERE rn < 10;
于 2013-08-28T11:38:25.867 に答える
0

2 つのクエリを実行する必要があります。最初にセットのサイズを見つけ、次にデータを見つけます。

select count(*) from tables where conditions;

それから2つ目。

セットを注文する前に、別の選択にラップすることに注意してください

select * from (select columns from tables where conditions order by columns) rownum < 100.

リソースの制限についてのレクチャー

于 2013-08-28T11:33:29.553 に答える
0

その場合は、条件付き集計を使用します。

      select sum(case when conditions then 1 else 0 end) as NumWithConditions,
             count(*) as Total
      from tables;
于 2013-08-28T11:41:09.293 に答える