sql >> データベース >  >> RDS >> Oracle

SQLOracleのパーセンテージ

    ウィンドウ関数を使用して実行率を計算し、その結果を80と比較することをお勧めします。

    この小さなコードサンプルでは、​​your_dataというCTEブロックに配置されたクエリの結果に基づいてそれを行う方法を示しました。 。アイデアを示しているだけです。

    with 
        your_data (category, percentage) as(
            -- sample data based on your example
            select 1, 32 from dual union
            select 2, 20 from dual union
            select 3, 20 from dual union
            select 4, 10 from dual union
            select 5, 18 from dual
        ),
        t as (
            select  your_data.*,
                    -- running sum calculation
                    sum(percentage) over (order by category) pctg_running
              from  your_data 
        )
    select * 
      from t
     where pctg_running <= 80
    

    実際には3行が返され、4行が表示されると予想します。実行パーセンテージが最初に境界(80)を超える行を追加するには、実行値から現在のカテゴリパーセンテージを抽出します。つまり、sum(percentage) over (order by category)を置き換えます。 sum(percentage) over (order by category) - percentage

    HTH




    1. postgresスーパーユーザーとは何ですか

    2. ダイレクトパスINSERTOracle

    3. SUM()を使用したMySQLクエリが期待される結果を返さない

    4. PostgreSQL-制約を無効にする