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

Hàm WIDTH_BUCKET () trong Oracle

Trong Oracle, WIDTH_BUCKET() hàm cho phép bạn tạo biểu đồ độ rộng tương đương, trong đó phạm vi biểu đồ được chia thành các khoảng có kích thước giống hệt nhau.

Đối với một biểu thức nhất định, WIDTH_BUCKET() trả về số nhóm mà giá trị của biểu thức này sẽ rơi vào sau khi được đánh giá.

Cú pháp

Cú pháp như sau:

WIDTH_BUCKET(expr, min_value, max_value, num_buckets)

Ở đâu:

  • expr là biểu thức mà biểu đồ đang được tạo. Biểu thức này phải đánh giá thành một giá trị số hoặc ngày giờ hoặc một giá trị có thể được chuyển đổi ngầm thành giá trị số hoặc ngày giờ. Nếu expr đánh giá thành null , thì biểu thức trả về null .
  • min_value max_value là các biểu thức giải quyết đến các điểm cuối của dải ô có thể chấp nhận được cho expr . Cả hai biểu thức này cũng phải đánh giá thành giá trị số hoặc giá trị ngày giờ và cả hai biểu thức này đều không thể đánh giá thành null .
  • num_buckets là một biểu thức giải quyết thành một hằng số cho biết số lượng nhóm. Biểu thức này phải đánh giá thành một số nguyên dương.

Ví dụ

Dưới đây là một ví dụ để chứng minh cách hoạt động của nó.

SELECT 
  WIDTH_BUCKET(3, 1, 12, 3) AS r1,
  WIDTH_BUCKET(5, 1, 12, 3) AS r2,
  WIDTH_BUCKET(9, 1, 12, 3) AS r3
FROM DUAL;

Kết quả:

   R1    R2    R3 
_____ _____ _____ 
    1     2     3 

Đây là lời giải thích. Hãy kiểm tra từng đối số, bắt đầu từ đối số cuối cùng và làm ngược lại đối số đầu tiên.

  • Đối số thứ tư :Tôi chỉ định ba nhóm. Tôi thực hiện việc này bằng cách sử dụng 3 là đối số thứ tư.
  • Đối số thứ hai và thứ ba :Tôi chỉ định rằng phạm vi nằm trong khoảng từ 1 đến 12. Trong trường hợp này, đối số thứ hai của tôi là 1 và đối số thứ ba là 12 .
  • Đối số đầu tiên :Giá trị này được so sánh với đối số thứ hai và thứ ba, để biết nó nên được gán cho nhóm nào trong số ba nhóm. Trong ví dụ của tôi, tôi gọi WIDTH_BUCKET() ba lần để minh họa khái niệm tốt hơn. Tôi làm điều này để có thể cung cấp ba giá trị khác nhau làm đối số đầu tiên, mỗi giá trị được gán cho một nhóm khác nhau.

Bảng sau cung cấp một cách khác để hình dung điều này:

Giá trị Nhóm
1, 2, 3, 4 Nhóm 1
5, 6, 7, 8 Nhóm 2
9, 10, 11, 12 Nhóm 3

Vì vậy, chúng ta có thể thấy rằng nhóm đầu tiên chấp nhận các giá trị từ 1 đến 4, nhóm thứ hai từ 5 đến 8 và nhóm thứ ba dành cho các giá trị từ 9 đến 12.

Nếu tôi thay đổi nó để có bốn nhóm, mã của tôi có thể trông giống như sau:

SELECT 
  WIDTH_BUCKET(3, 1, 12, 4) AS r1,
  WIDTH_BUCKET(5, 1, 12, 4) AS r2,
  WIDTH_BUCKET(9, 1, 12, 4) AS r3
FROM DUAL;

Và bảng sẽ như thế này:

Giá trị Nhóm
1, 2, 3 Nhóm 1
4, 5, 6 Nhóm 2
7, 8, 9 Nhóm 3
10, 11, 12 Nhóm 4

Dưới đây là một ví dụ khác trong đó chỉ kích thước nhóm thay đổi:

SELECT 
  WIDTH_BUCKET(5, 1, 12, 3) AS r1,
  WIDTH_BUCKET(5, 1, 12, 6) AS r2,
  WIDTH_BUCKET(5, 1, 12, 10) AS r3
FROM DUAL;

Kết quả:

   R1    R2    R3 
_____ _____ _____ 
    2     3     4 

Ngoài phạm vi

Nếu đầu vào nằm ngoài phạm vi của nhóm, bạn sẽ nhận được 0 hoặc num_buckets +1, tùy thuộc vào việc đầu vào nằm dưới phạm vi hay cao hơn phạm vi đó. Trong những trường hợp như vậy, Cơ sở dữ liệu Oracle tạo một nhóm quy trình dưới được đánh số 0 và một nhóm tràn được đánh số num_buckets +1.

Ví dụ:

SELECT 
  WIDTH_BUCKET(-3, 1, 12, 3),
  WIDTH_BUCKET(20, 1, 12, 3)
FROM DUAL;

Kết quả:

   WIDTH_BUCKET(-3,1,12,3)    WIDTH_BUCKET(20,1,12,3) 
__________________________ __________________________ 
                         0                          4 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Nhập tệp CSV

  2. Ngoại lệ Java Oracle - số biểu thức tối đa trong danh sách là 1000

  3. Phải làm gì nếu bạn gặp lỗi không thể mở tệp đối tượng được chia sẻ khi sử dụng trình điều khiển Easysoft Oracle ODBC phiên bản OCI?

  4. Cách định dạng số phủ định với dấu ngoặc nhọn trong Oracle

  5. GROUP BY hoạt động như thế nào?