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

Làm thế nào để sử dụng phân biệt và tổng hợp cả hai cùng nhau trong oracle?

Tôi sẽ rất cẩn thận với cấu trúc dữ liệu như thế này. Trước tiên, hãy kiểm tra xem tất cả id s có chính xác một mức giá:

select id
from table t
group by id
having count(distinct price) > 1;

Tôi nghĩ rằng phương pháp an toàn nhất là trích ra một mức giá cụ thể cho mỗi id (nói mức tối đa) và sau đó thực hiện tổng hợp:

select sum(price)
from (select id, max(price) as price
      from table t
      group by id
     ) t;

Sau đó, hãy sửa dữ liệu của bạn để bạn không có thứ nguyên phụ gia lặp lại. Nên có một bảng với một hàng cho mỗi id và giá (hoặc có thể có các bản sao nhưng được kiểm soát bởi ngày có hiệu lực và ngày kết thúc).

Dữ liệu bị lộn xộn; bạn không nên cho rằng giá là như nhau trên tất cả các hàng cho một id nhất định. Bạn cần kiểm tra điều đó mỗi khi bạn sử dụng các trường, cho đến khi bạn sửa dữ liệu.



  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ại sao rlwrap dội lại những gì tôi nhập từ bàn phím?

  2. Oracle JDBC ojdbc6 Jar làm phụ thuộc Maven

  3. Cập nhật Oracle bị treo

  4. Oracle có lưu trữ các số 0 ở cuối cho kiểu dữ liệu Số không?

  5. mối quan hệ một-nhiều với ràng buộc cơ sở dữ liệu và nghịch đảo =true