Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Phần trăm SQL Oracle

Tôi khuyên bạn nên tính toán tỷ lệ phần trăm đang chạy bằng cách sử dụng hàm cửa sổ và sau đó so sánh kết quả với 80.

Trong mẫu mã nhỏ này, tôi đã chỉ ra cách thực hiện dựa trên kết quả truy vấn của bạn được đặt vào một khối CTE có tên là your_data . Nó chỉ cho bạn thấy ý tưởng.

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

Trên thực tế, nó trả về 3 hàng và bạn nói rằng bạn mong đợi 4 hàng được hiển thị. Để thêm hàng mà tỷ lệ phần trăm đang chạy trước tiên vượt quá ranh giới của bạn (80), bạn có thể trích xuất tỷ lệ phần trăm danh mục hiện tại từ giá trị đang chạy, tức là thay thế sum(percentage) over (order by category) với sum(percentage) over (order by category) - percentage .

HTH




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác thực ngày trong Oracle mà không cần sử dụng hàm

  2. Cách tạo VARRAY làm thành viên khối PL / SQL trong cơ sở dữ liệu Oracle

  3. Cách kết nối với cơ sở dữ liệu Oracle 11 từ. mạng

  4. Làm cách nào để tính toán tuần trong năm trong Oracle bằng cách sử dụng ngày đầu tiên không chuẩn?

  5. Entity Framework Core - Take (1), Single (), First () ... Không hoạt động với Nhà cung cấp Oracle (ORA-00933:Lệnh SQL không được kết thúc đúng cách)