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

Oracle:nhận giá trị tối đa của một nhóm?

Tôi có xu hướng sử dụng các hàm phân tích

SELECT monitor_id,
       host_name,
       calibration_date,
       value
  FROM (SELECT b.monitor_id,
               b.host_name,
               a.calibration_date,
               a.value,
               rank() over (partition by b.monitor_id order by a.calibration_date desc) rnk
          FROM table_name a,
               table_name2 b
         WHERE a.some_key = b.some_key)
 WHERE rnk = 1

Bạn cũng có thể sử dụng các truy vấn con tương quan mặc dù điều đó sẽ kém hiệu quả hơn

SELECT monitor_id,
       calibration_date,
       value
  FROM table_name a
 WHERE a.calibration_date = (SELECT MAX(b.calibration_date)
                               FROM table_name b
                              WHERE a.monitor_id = b.monitor_id)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hủy một câu lệnh SELECT đang chạy

  2. Truy xuất các mục của danh sách liên kết trong cơ sở dữ liệu quan hệ

  3. Đặt hàng theo giá trị 2 cột

  4. Di chuyển dữ liệu từ oracle sang HDFS, xử lý và chuyển sang Teradata từ HDFS

  5. Làm cách nào để biết liệu tôi có thực hiện công việc chưa cam kết trong một giao dịch Oracle hay không?