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

chức năng tổng hợp oracle với nhiều cột

Tôi thấy khá dễ dàng hơn khi chỉ định các bộ chính xác mà tôi cần với mệnh đề GROUPING SET:

WITH data(val1, val2, val3) AS
     ( SELECT 'a' ,'a-details' ,'1' FROM DUAL
     UNION ALL
     SELECT 'b' ,'b-details' ,'2' FROM DUAL
     UNION ALL
     SELECT 'c' ,'c-details' ,'3' FROM DUAL
     )
SELECT NVL(val1,'Total Result'),
     val2,
     SUM(val3) tot
from data
group by grouping sets ((val1, val2),());

Tôi nghi ngờ rằng nó hiệu quả hơn, vì nó chỉ định trực tiếp các cấp độ để tính toán.

http://sqlfiddle.com/#!4/8301d/3

CUBE và ROLLUP rất tiện lợi để tự động tạo số lượng lớn các cấp tổng hợp (ví dụ:mọi cấp trong hệ thống phân cấp thứ nguyên) và có thể có trường hợp sử dụng GROUPING ID nếu bạn muốn loại bỏ một tập hợp con nhỏ các cấp khỏi một CUBE lớn do CUBE tạo nhưng GROUPING SET được thiết kế chính xác để chỉ định các cấp độ tổng hợp cụ thể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên người dùng và mật khẩu nào nên được nhập khi kết nối với SQL * Plus sau khi cài đặt Oracle 11g?

  2. ORA-00936:thiếu biểu thức tiên tri

  3. Tài liệu MAA cho Đám mây Oracle

  4. EF và TransactionScope cho cả SQL Server và Oracle mà không cần chuyển sang DTC?

  5. Một hoạt động chèn có thể làm cho một hoạt động DDL khác phải chờ đợi không?