Zoeken…


Invoering

Elke database is een verzameling van verschillende tabellen en elke tabel bevat verschillende gegevens op een georganiseerde manier. Terwijl we met gegevens werken, is de informatie die we vaak nodig hebben verspreid over meerdere tabellen. We hebben joins / merge nodig om de gewenste uitvoer te krijgen.

In SAS gebruiken we joins tijdens het werken met Proc SQL en gebruiken we merge tijdens het werken met Data step . We zullen nu alleen praten over joins in Proc SQL .

parameters

Type lidmaatschap uitgang
Proc Sql SQL-procedure in SAS
Maak een tabel Maakt een SAS-gegevensset
kiezen Selecteert vereiste variabelen uit respectieve datasets
Waar Specificeert een specifieke voorwaarde
ophouden Beëindig de procedure

Opmerkingen

Zoals vermeld in de inleiding, kunnen we Merge ook gebruiken in een data step die in een apart onderwerp wordt besproken. Joins spelen een zeer belangrijke rol om gegevens te combineren en te verenigen volgens de vereiste.

Verticaal samenvoegen

Verticale join voegt gegevensset B toe aan gegevensset A, mits beide vergelijkbare variabelen hebben. We hebben bijvoorbeeld verkopen voor de maand januari'17 in gegevensset A en verkopen voor februari'17 in gegevensset B. Om een gegevensset C te maken die zowel januari als februari verkopen, gebruiken we Vertical Join.

PROC SQL;
CREATE TABLE C AS
SELECT *
FROM A
UNION 
SELECT *
FROM B;
QUIT;

Gegevensset C heeft nu waarnemingen van zowel A als B en is verticaal toegevoegd.

Innerlijke join

Inner join maakt een gegevensset met records die overeenkomende waarden uit beide tabellen hebben. We hebben bijvoorbeeld een gegevensset A die klantinformatie bevat en een gegevensset B die creditcardgegevens bevat. Laten we gegevensset C maken om de creditcardgegevens van klanten in gegevensset A te krijgen

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUM
FROM CUSTOMER A, CC_DETAILS B
WHERE A.CUSTOMERID=B.CUSTOMERID
QUIT;

Dataset C heeft alleen overeenkomende waarnemingen uit beide datasets.

Linker join retourneert alle observaties in de linkergegevensset, ongeacht hun sleutelwaarden, maar alleen observaties met overeenkomende sleutelwaarden uit de juiste gegevensset. Gezien hetzelfde voorbeeld als hierboven,

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A LEFT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Dataset C bevat alle waarden uit de linker tabel, plus overeenkomende waarden uit de rechter tabel of ontbrekende waarden in het geval van geen overeenkomst.

Rechts meedoen

Net als linker join selecteert rechter join alle observaties uit de rechter gegevensset en de overeenkomende records uit de linker tabel.

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A RIGHT JOIN CC_DETAILS B
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Gegevensset C bevat alle waarden uit de rechtertabel, plus overeenkomende waarden uit de linkertabel of ontbrekende waarden in het geval van geen overeenkomst.

Volledige deelname

Volledige join selecteert alle waarnemingen uit beide gegevenssets, maar er ontbreken waarden waarbij de sleutelwaarde in elke waarneming slechts in één tabel voorkomt.

PROC SQL;
CREATE TABLE C AS
SELECT A.*, B.CC_NUMBER, B.START_DATE
FROM CUSTOMER A FULL JOIN CC_DETAILS B 
ON A.CUSTOMERID=B.CUSTOMERID
QUIT;

Dataset C bevat alle records uit beide tabellen en vult in . voor het missen van wedstrijden aan beide kanten.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow