PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво точно прави/този отчет за данни в SAS? PostgreSQL еквивалент?

Изявлението използва това, което се нарича „обработка чрез група“. Преди стъпката да може да се изпълни, тя изисква данните да бъдат сортирани по btn wtn resp_ji .

first.resp_ji piece проверява дали за първи път вижда текущата стойност на resp_ji в текущата комбинация btn/wtn. По същия начин last.resp_ji piece проверява дали е последният път, когато ще види текущата стойност на resp_ji в рамките на текущата комбинация btn/wtn.

Комбинирайки всичко заедно с изявлението:

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

Казва се, че ако текущата стойност на resp_ji се среща няколко пъти за текущата комбинация от btn/wtn, тогава записът се запазва, в противен случай се отхвърля записът. Поведението на if изразът, когато се използва по този начин, имплицитно запазва/отхвърля записа.

За да направите еквивалента в SQL, можете да направите нещо като:

  1. Намерете всички записи за изхвърляне.
  2. Изхвърлете тези записи от оригиналния набор от данни.

И така...

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

РЕДАКТИРАНЕ :Трябва да спомена, че няма прост SQL еквивалент. Може да е възможно чрез номериране на редове в подзаявки и след това изграждане на логика отгоре на това, но би било ужасно. Може да зависи и от специфичния вид на използвания 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. Комбиниране на изрази INSERT в CTE за модифициране на данни с израз CASE

  2. Как работи функцията Degrees() в PostgreSQL

  3. Защо SQL идентификационните последователности излизат от синхрон (по-специално с помощта на Postgres)?

  4. Как да свържете контейнера за уеб приложения на Docker към контейнера на Docker PostgreSQL?

  5. Надстройване на вашата база данни до PostgreSQL версия 10 – какво трябва да знаете