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

Nhóm dữ liệu thành các bảng khác nhau dựa trên ngày tối thiểu của một sự kiện

Sử dụng MIN làm hàm phân tích, bạn có thể xác định loại trái cây cần được xem xét cho khách hàng.

Vì thứ tự không phải là bảng chữ cái, bạn phải trợ giúp với DECODE

Phần còn lại là một nhóm đơn giản bởi với một MIN cho ngày thanh trừng, nhưng chỉ xem xét các giao dịch mua với trái cây MIN.

with cust as (
select CUST_ID, PURCH_DATE, FRUIT,
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)) over (partition by cust_id),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab)
select CUST_ID,min_fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from cust
group by CUST_ID,min_fruit
order by 1,2

Bellow là một giải pháp thay thế mà không cần sử dụng các hàm phân tích .

Truy vấn con đầu tiên tính toán quả tối thiểu với nhóm silpme group by sử dụng cùng một DECODE logik.

Bạn phải tham gia truy vấn con vào bảng gốc, đây là chính xác những gì bạn có thể lưu bằng cách sử dụng các hàm phân tích.

with min_fruit as (
select CUST_ID, 
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab
group by cust_id)
select cust.CUST_ID,min_fruit fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from tab cust
join min_fruit on cust.cust_id = min_fruit.cust_id
group by cust.CUST_ID,min_fruit
order by 1,2;

Với dữ liệu mẫu của bạn, điều này trả về

   CUST_ID FRUIT  MIN_PURCH_DATE     
---------- ------ -------------------
     10001 Apple  12.01.2019 00:00:00
     10002 Apple  21.01.2019 00:00:00
     10003 Apple  06.02.2019 00:00:00


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trình xử lý cài đặt Oracle Pro * C / OCI cho SIGSEGV / SIGABRT và bạn bè - tại sao và làm thế nào để tắt?

  2. Truy vấn SQL với CASE và nhóm theo

  3. Giải nén Oracle từ giá trị cắt xml

  4. Cách khai báo và hiển thị một biến trong Oracle

  5. Nối hai bảng SQL