PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Co dokładnie robi/ta deklaracja danych w SAS-ie? Odpowiednik PostgreSQL?

Oświadczenie używa tego, co nazywa się „przetwarzaniem grupowym”. Przed uruchomieniem kroku wymagane jest posortowanie danych według btn wtn resp_ji .

first.resp_ji piece sprawdza, czy po raz pierwszy widzi bieżącą wartość resp_ji w bieżącej kombinacji btn/wtn. Podobnie last.resp_ji piece sprawdza, czy po raz ostatni zobaczy bieżącą wartość resp_ji w ramach aktualnej kombinacji btn/wtn.

Łącząc to wszystko razem, stwierdzenie:

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

Mówi się, że jeśli bieżąca wartość resp_ji występuje wiele razy dla bieżącej kombinacji btn/wtn, zachowaj rekord, w przeciwnym razie odrzuć rekord. Zachowanie if oświadczenie użyte w ten sposób domyślnie zachowuje/odrzuca zapis.

Aby zrobić odpowiednik w SQL, możesz zrobić coś takiego:

  1. Znajdź wszystkie rekordy do odrzucenia.
  2. Odrzuć te rekordy z oryginalnego zbioru danych.

Więc...

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

EDYTUJ :Powinienem wspomnieć, że nie ma prostego odpowiednika SQL. Może to być możliwe przez numerowanie wierszy w podzapytaniach, a następnie budowanie logiki na tym, ale byłoby to brzydkie. Może to również zależeć od specyfiki używanego języka SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails 3:błąd migracji podczas używania json jako typu kolumny w ActiveRecord wspieranym przez Postgres

  2. jak przekazać zmienną do polecenia kopiowania w Postgresql

  3. Jak skonfigurować bazę danych Postgres dla lokalnego projektu Rails?

  4. Uzyskaj nazwę tabeli źródłowej wiersza podczas zapytania rodzica, z którego dziedziczy

  5. pg_restore nie może wykonać zapytania:BŁĄD:nieprawidłowa nazwa lokalizacji:en_US.UTF-8