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

Chính xác thì câu lệnh dữ liệu / this trong SAS đang làm gì? PostgreSQL tương đương?

Câu lệnh đang sử dụng cái được gọi là 'xử lý theo nhóm'. Trước khi bước có thể chạy, nó yêu cầu dữ liệu được sắp xếp theo btn wtn resp_ji .

first.resp_ji mảnh đang kiểm tra xem đây có phải là lần đầu tiên nó nhìn thấy giá trị hiện tại của resp_ji trong tổ hợp btn / wtn hiện tại hay không. Tương tự như vậy, last.resp_ji mảnh đang kiểm tra xem đó là lần cuối cùng mà nó sẽ thấy giá trị hiện tại của resp_ji trong kết hợp btn / wtn hiện tại.

Kết hợp tất cả lại với nhau, câu lệnh:

if not (first.resp_ji and last.resp_ji);

Có nghĩa là, nếu giá trị hiện tại của resp_ji xảy ra nhiều lần cho sự kết hợp hiện tại của btn / wtn thì hãy giữ bản ghi, nếu không thì hãy loại bỏ bản ghi. Hành vi của if khi được sử dụng như vậy sẽ ngầm giữ / loại bỏ bản ghi.

Để làm điều tương tự trong SQL, bạn có thể làm như sau:

  1. Tìm tất cả các bản ghi để loại bỏ.
  2. Loại bỏ các bản ghi đó khỏi tập dữ liệu gốc.

Vì vậy ...

create table rows_to_discard as 
select btn, wtn, resp_ji, count(*) as freq
from mytable
group by btn, wtn, resp_ji
having count(*) = 1

create table want as 
select a.*
from mytable a
left join rows_to_discard b  on b.btn = a.btn
                            and b.wtn = a.wtn
                            and b.resp_ji = a.resp_ji
where b.btn is null

CHỈNH SỬA :Tôi nên đề cập rằng không có SQL đơn giản tương đương. Nó có thể được thực hiện bằng cách đánh số hàng trong các truy vấn con, và sau đó xây dựng logic trên đó nhưng nó sẽ rất khó. Nó cũng có thể phụ thuộc vào hương vị cụ thể của SQL đang được sử dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - truy xuất các mục theo thứ tự chúng được lưu trữ

  2. Có nhà điều hành postgres CLOSEST không?

  3. PostgreSQL:ràng buộc duy nhất hoặc chỉ mục duy nhất

  4. Xóa một giá trị không phải duy nhất khỏi một mảng

  5. Ứng dụng để giám sát các truy vấn PostgreSQL trong thời gian thực?