Introduktionskurs i SAS Base

Storlek: px
Starta visningen från sidan:

Download "Introduktionskurs i SAS Base"

Transkript

1 Introduktionskurs i SAS Base Del 3 Sammanslagning av dataset (joins) och grundläggande SAS/SQL

2 Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens (Knowit Software Solutions AB) skriftliga godkännande. Upphovsmannen har gett sitt godkännande att detta material får fritt användas vid undervisning på Linköpingsuniversitet, IDA. Sidan 2

3 SAMMANSLAGNING AV DATASET (JOINS)... 4 MERGE... 4 Enkel-matchning... 4 Nyckelvariabelsmatchning... 5 Tips vid användning av MERGE... 7 UPDATE... 8 SET PROC APPEND SAS/SQL SKAPA TABELLER OCH VYER CALCULATED OLIKA SÄTT ATT VÄLJA UT DATA CASE-SATSER SKAPA TOM TABELL MED RÄTT ATTRIBUT INSERT INTO TA BORT RADER FRÅN TABELL TA BORT EN HEL TABELL UPPDATERA EN TABELL SUBQUERIES SET-operatorer SKAPA MACROVARIABLER AUTOMATISKA MACROVARIABLER SAMMANSLAGNING AV TABELLER JOIN Inner join Outer join Cartesian product SUMMERINGAR INDEX SQL PASSTHRU LÄNKAR OCH LITTERATURTIPS ATT ANVÄNDA SAS METAINFORMATION Sidan 3

4 Sammanslagning av dataset (joins) Att foga ihop information från två eller flera dataset till ett dataset är väldigt användbart. Detta kan göras på ett flertal sätt. Vi börjar dock med att visa hur du kan använda dataset-uttrycket MERGE för ihopfogning av två eller flera dataset. Vid ihopslagning av två eller flera dataset använder man sig av en gemensam nyckelvariabel, d.v.s. någon ID-variabel. Ifall denna variabel skulle heta olika i de olika tabellerna, kan man använda sig av RENAME för att döpa om någon av dem för att alla ska ha samma namn, t.ex. data ab; merge a b (rename=(id=idnr)); Merge Merge använts framförallt för att sätta ihop två eller flera dataset från sidan. För att illustrera användandet av MERGE så utgår vi ifrån dessa två dataset innehållande IDNR som nyckelbegrepp. För att använda nyckelbegreppet via ett BY-statement måste båda dataseten sorteras efter nyckelbegreppet. SAS-datset B Idnr Kön P-nr 1 Man Kvinna SAS-datset A 3 Kvinna Man Idnr Datum Lön 6 Man Enkel-matchning Används väldigt sällan eftersom denna metod är lite vansklig. Denna metod kräver mycket av den information som ska matchas ihop. Det man bör tänka på är att observation ett från dataset A matchas ihop med observation ett i dataset B osv. Om man inte tänker på detta kan det gå som nedan. Om dataseten har någon variabel gemensam så tas alltid värdet ifrån det sist angivna datasetets variabel till det nya datasetet. Sidan 4

5 Exempel enkel matchning: SAS-datset AB Idnr Datum Lön Kön P-nr data ab; merge a b; Man Kvinna Kvinna Man Man Denna matchning får ett resultat som är felaktigt eftersom ingen hänsyn tagits till nyckelvariabeln IDNR. SAS bestämde alltså att den sist angivna datasetets variabel IDNR skulle användas. Nyckelvariabelsmatchning Vad skulle man då göra för att få ordning på matchningen i föregående exempel. Den gemensamma variabeln i båda dataseten är IDNR, vilken i detta fall får utgöra nyckelvariabeln. För att lyckas med matchning med hjälp av BY-variabler måste båda dataseten vara sorterade. Vi testar med BY-variabeln och får följande resultat. Exempel - Nyckelvariabelsmatchning: data ab; merge a b; by idnr; SAS-datset AB Idnr Datum Lön Kön P-nr Man Man Kvinna Kvinna Man Man Detta blev bättre. Här kan man se att rätt person fick rätt lön. De IDNR (nyckelvariabeln) som inte hittar någon matchning skapar bortfall för de tillkommande variablerna från det andra datasetet. Sidan 5

6 Exempel Matchning för poster från första datasetet med (IN =): Hur ska man göra om man bara är intresserad av att dataset A ska tillföras nya uppgifter från dataset B (d.v.s. nya variabler/kolumner, om det finns några). För detta ändamål får man använda sig av ett speciellt dataset-option [IN = ] som kan användas för SET, MERGE and UPDATE. Denna option är dock mest användbar för MERGE. Vi utgår fortfarande ifrån dataset A och B. Denna option används för att tilldela en intern variabel värdet ETT om observationen kommer ifrån det aktuella datasetet. Nedan kallar vi dessa variabler A och B. Den fungerar på följande sätt. SAS-datset AB data ab; merge a(in = a) b; by idnr; if a; Idnr Datum Lön Kön P-nr Man Man Kvinna Exempel Matchning för poster från andra datasetet med (IN =): data ab; merge a b(in = b); by idnr; if b; SAS-datset AB Idnr Datum Lön Kön P-nr Man Man Kvinna Kvinna Man Man Exempel - Matchning för poster med by-variabel som finns i båda dataseten: data ab; merge a(in = a) b(in = b); by idnr; if a and b; SAS-datset AB Idnr Datum Lön Kön P-nr Man Man Kvinna Sidan 6

7 Exempel - Matchning om IDNR endast finns med dataset A: data ab; merge a(in = a) b(in = b); by idnr; if a and not b; SAS-datset AB Idnr Datum Lön Kön P-nr Exempel - Vi vill endast att matchning görs om IDNR endast finns med dataset B: data ab; merge a(in = a) b(in = b); by idnr; if not a and b; SAS-datset AB Idnr Datum Lön Kön P-nr 3.. Kvinna Man Man Tips vid användning av MERGE Tänk på att aldrig ha samma namn på den interna (IN=) variabeln som någon annan variabel i datasetet. Efter genomförd matchning tas nämligen dessa interna IN - variabler bort, även om de var riktiga variabler innan matchningen gjordes. Merge kan vara lite lurt ibland. MERGE fungerar så att när en observation har hittat en matchning är SAS nöjt. Den forsätter sedan inte att försöka matcha observationen igen om det inte är den sista observationen i BY-gruppen. För det mesta duger detta men när fler ett dataset innehåller dubblerade nyckelvariabler kan det gå uppåt väggarna fel. För att klara av detta i datasteg krävs inblandning av DO-loopar eller macros. Detta är dock tidskrävande och inte speciellt effektivt. Vad man i detta läge bör studera närmare är SQL som vid en speciell typ av sammanslagning skapar en katekesisk produkt mellan de ingående indataseten. Sidan 7

8 UPDATE Dataset-uttrycket UPDATE använts framförallt om du vill ta bort, lägga till eller ändra vissa specifika värden i ett dataset. För att rätt poster ska uppdateras används nyckelvariabeler. Detta görs via ett BY-uttryck som måste finnas med när UPDATE ska användas. För att genomföra UPDATE krävs att man har ett huvuddataset (det dataset man vill uppdatera) samt ett uppdateringsdataset. Det sistnämnda datasetet ska endast innehålla de värden man vill förändra, de resterande värdena ska i normalfallet vara missing. Dataseten måste också vara sorterade i samma ordning, d.v.s. på den nyckelvariabel som ska användas. Exempel Sortering av dataset proc sort data = ab; by IDNR; Exempel Uppdatering med UPDATE Huvuddatasetet LON innehåller alla anställdas nuvarande lön med datum för senaste förändringen. Vi har upptäckt att datumet för ANSTNR 6 är fel_ aktigt. Det ska vara Vi har även efter löneförhandling höjt lönen för ANSTNR 10 som ska erhålla med början Ett dataset med de uppgifter som ska ändras skapas. data lonupd; input anstnr datum lon; cards; ; Klart för uppdatering: data lon; update lon lonupd; by idnr; Detta går naturligtvis även att genomföra med IF-satser, men prestandamässigt är detta det snabbaste sättet. Märk även att endast alla giltiga värden användes. Uppgifter som var missing lämnades orörda. Anstnr SAS-datset LON Datum Lön SAS-datset LONUPD Idnr Datum Lön Anstnr SAS-datset LON Datum Lön Exempel Nollställa uppgifter med UPDATE Sidan 8

9 Ibland kan det finnas ett behov av att nollställa uppgifter (sätta missing). För detta ändamål finns ett dataset-options för UPDATE-statementet. Detta talar om vilket uppdateringssätt man önskar och heter UPDATEMODE. Den kan ha två värden, MISSINGCHECK eller NOMISSINGCHECK. Ursprungsvärdet (default) är MISSINGCHECK, d.v.s. den kontrollerar så att värdet inte är missing innan uppdatering sker. Detta händer om vi i det tidigare exemplet angivit UPDATEMODE = NOMISSINGCHECK: SAS-datset LON Anstnr Datum Lön data lon; update lon lonupd UPDATEMODE = nomissingcheck; by idnr; Sidan 9

10 SET Dataset-uttrycket SET används för att läsa observationer ifrån ett eller flera dataset. Den enkla inläsningen har vi redan gått igenom. Exempel concatenating : Vi gick även igenom hur man kan länka ihop flera dataset i samma SET-sats (s.k. concatenating = konkatenerat). I detta fall läses först datasetet GAMMAL1. När läsning och skrivning från detta dataset är klar börjar läsning av dataset GAMMAL2. Dataseten läggs under varandra. data ny; set gammal1 gammal2; Exempel interleaving : Ett annat sätt som vi studerade var att länka ihop dataset med hjälp av en BY-sats. På detta sätt blir slutprodukten ett sorterat dataset efter BY-satsen (s.k. interleaving = sammanflätat). data ny; set gammal1 gammal2; by idnr; Exempel SET med (IN=) för att beräkna värde utifrån urprungsdataset Vid länkningar genom en SET-sats kan dataset options (IN=) vara användbart, framförallt om man ska göra olika beräkningar beroende på vilket dataset som informationen kommer ifrån. data sve; set usa(in = usa) eu(in = eu); if usa then belopp = belopp * ; else if eu then belopp = belopp * ; Exempel SET med två dataset och OUTPUT Nästa steg i användningen av SET är att använda flera SET-satser i samma datasteg. När man använder denna teknik gäller det att ha kontroll över var utskriften (OUTPUT) till det nya datasetet sker. Om man exempelvis skriver följande data ny; set a; set a; blir resultatet det samma som om man hade skrivet endast en SET-sats. Detta beror på utskriften till det nya datasetet allt sker i slutet av datastegsloopen. Den läser från två ställen men använder endast det sist lästa vid utskriften. Genom att placera output efter varje SET-sats får man således dubbla dataset i NY. Sidan 10

11 Ett annat sätt är naturligtvis att endast använda en SET-sats med dubbla dataset (SET a a) data ny; set a;output; set a;output; Med hjälp av DO-satser kan man styra utskriften till sitt nya dataset fullständigt. Ett användbar dataset option är [END = variabelnamn som flaggar för när man kommer till sista observationen i ett dataset. Vi illustrerar genom detta exempel. Exempel - Flera SET-satser med hjälp av DO-sats: Vi vill skapa ett dataset som förenar dataset A och B. Vi vill gör alla beräkningar i dataset A först innan beräkningar i dataset B görs. data ny; do while (not sista); set A end = sista; source = 'dataset A'; if idnr > 1500 then calc = (belopp * 1.10)/ ; else calc = belopp / ; output; if sista then do; idnr=.;calc=.;source=''; end; end; do while (not sistb); set B end = sistb; source = 'dataset B'; if idnr < 200 then calc = (belopp * ); else calc = belopp; output; end; Genom detta förfarande läses först alla observationer i dataset A (samt beräkningar görs) innan SAS går över till dataset B. Att tänka på är man i vissa lägen bör nollställa variabler när sista observationen har bearbetats och skrivits ut till datasetet. Sidan 11

12 Proc Append En annan metod att lägga ihop två dataset är genom proceduren APPEND, som lämpar sig framförallt när man ska lägga till en mindre fil till en stor basfil. Proceduren kräver ganska mycket av informationen i de ingående dataseten. Dataseten ska helst innehålla exakt lika många variabler med samma namn. I normalläget fungerar inte proceduren om inte antalet variabler är lika i dataseten, eller om variabellängd och typ är olika. För att komma förbi detta hårda krav finns ett option FORCE som tvingar in tilläggsdatasetet till basdatasetet. Någon BY-sats kan inte användas - tilläggsfilen läggs alltid i slutet av BASfilen. I nedanstående exempel ska datasetet feb99 läggas till årsfilen. Eftersom en ny variabel har tillkommit läggs FORCE-option in. Exempel lägga till data med APPEND: proc append base = year99 data = feb99 FORCE; Sidan 12

13 SAS/SQL Proc SQL gör det möjligt att skriva Structured Query Language (SQL) i SAS. Med hjälp av proc SQL kan du bland annat: Hämta och manipulera data lagrat i tabeller och vyer. Skapa tabeller, vyer och indexera kolumner i en tabell. Skapa macrovariabler med värden från en fråga. Lägga till eller ändra värden i en tabellkolumn. Lägga till eller ta bort en rad i en tabell. Skicka SQL-satser till andra databaser och hämta data från dessa. Skapa deskriptiv statistik som medeltal, antal, summeringar etc. Proc SQL är en interaktiv procedur vilket betyder att den är aktiv tills den avslutas med QUIT eller tills en annan procedur eller ett annat datasteg körs, till skillnad från t.ex. ett dataseg, som avslutas endast med RUN. Proceduren kan användas till många olika saker, bland annat att skapa tabeller eller vyer genom att hämta information från andra tabeller, eller att skriva ut ett resultat av en fråga till outputfönstret. Hjälp och exempel om Proc SQL finns i hjälpen under SAS Product/Base SAS/SAS SQL Procedure User s Guide. Exempel - resultat presenterat i output-fönstret Ibland vill man bara ställa en enkel fråga och få ett svar utskrivet i outputfönstret, alltså inte skapa en tabell som innehåller resultatet av frågan. Till exempel kanske man vill ta reda på det senaste datumet som förekommer i en tabell. Syntaxen är som följer: select max(loaddate) from tab1; Det går att skapa riktigt snygga rapporter i output-fönstret med hjälp av Proc SQL, men det är inget som kommer att beröras vidare här se del 5 av denna kurs, som behandlar rapporter. Skapa tabeller och vyer Ofta vill man spara resultatet av sin SQL-fråga. För att skapa en ny tabell eller vy med Proc SQL anger du CREATE TABLE/VIEW samt namnet: create table tab2 as select col1, col2 from tab1; Sidan 13

14 Vill man att resultatet ska bli sorterat så lägger man till ORDER BY och anger sedan kolumnen/kolumnerna som man vill sortera på: create table tab2 as select col1, col2 from tab1 order by col1; Genom att ange ASC eller DESC efter kolumnerna kan man välja om resultatet ska sorteras i stigande eller fallande ordning. Calculated Man kan skapa en ny variabel och därefter använda den i samma SELECT (eller WHERE)-uttryck m.h.a. CALCULATED: create table tab2 as select col1,col2 * 2 as new_col1,col3 + calculated new_col1 as new_col2 from tab1; Resultatet här blir alltså en tabell med tre variabler col1, new_col1 och new_col2. Notera också användandet av kolumnalias, skapas med AS. Olika sätt att välja ut data Exempel WHERE: WHERE går att använda som i vanliga SAS: create table tab2 as select col1,col2 from tab1 where col3 = 'A'; Exempel IN(): Värt att notera att när man använder IN måste man ha kommatecken mellan alternativen (vilket man inte behöver i vanliga SAS): create table tab2 as select col1,col2 from tab1 where col3 in ('A', 'B'); Exempel LIKE: Urval av rader där en av variablerna har en viss kombination av bokstäver i början görs med LIKE kombinerat med ett %-tecken som wildcard: Sidan 14

15 create table tab2 as select col1,col2 from tab1 where col4 like 'AB%'; En annan operator som kan användas tillsammans med like är _. Den är wildcard för en specifik position i ett ord, t.ex. He_ matchar Hej, Hel o.s.v., men inte Hejsan. Ett exempel där man vill hitta alla observationer där fjärde bokstaven i variabeln col4 är A: create table tab2 as select col1,col2 from tab1 where col4 like ' A%'; CASE-satser Motsvarigheten till SELECT-WHEN eller IF-THEN-ELSE i vanliga datasteg är CASE- WHEN. Ett exempel där man skapar en ny variabel attribut utifrån en befintlig variabel col2 (båda sparas i uttabellen): create table tab2 as select col1, col2, case col2 when 'BLÅ' then 'FÄRG' when 'RÖD' then 'FÄRG' when 'RUND' then 'FORM' when 'KANTIG' then 'FORM' else 'OKÄND' end as attribut from tab1; Sidan 15

16 Skapa tom tabell med rätt attribut Om man vill skapa en tom tabell som har samma attribut som en existerande tabell kan man använda LIKE: create table tab2 like tab1; INSERT INTO Om man vill lägga till nya rader i en tabell kan det göras med INSERT INTO. Här läggs en ny återförsäljare in i en styrtabell: insert into tab1 (col1, col2) values (101101, 'The Phone House'); Eller om man vill komplettera en tabell med delar av en annan tabell: insert into tab1 (col1, col2) select col1, col2 from tab2 where col1 = 1; Ta bort rader från tabell Syntaxen för att ta bort rader från en tabell med proc sql liknar syntaxen i vanliga datasteg: delete from tab1 where col1 = 1; Eller om man vill ta bort alla rader i tabellen: delete from tab1; Observationer kan tas bort utan att index förstörs. Men det som händer när man gör DELETE på en observation är att innehållet i observationen tas bort, inte själva observationen. Observationen är liksom bara markerad som borttagen. För att få bort rader som markerats som borttagna så kan man göra en PROC COPY då rensas de här raderna bort. Ta bort en hel tabell Tabeller som ska tas bort helt droppas : Sidan 16

17 drop table tab1; Flera på samma gång: drop table tab1, tab2; Uppdatera en tabell En tabell kan uppdateras på olika sätt m.h.a. ALTER, t.ex. att lägga till en kolumn: Exempel lägga till en kolumn alter table tab1 add col5 char(3); Exempel ta bort en kolumn alter table tab1 drop col1; Exempel modifiera en kolumn Ibland kan man vilja ändra längden på en enstaka variabel. Om man gör detta i ett vanligt datasteg så hamnar den ändrade variabeln först i tabellen vilket kanske inte alltid är önskvärt. För att få variablerna i samma ordning som innan ändringen så får man räkna upp variablerna i den ordning man vill ha dem. Då är det lite lättare med Proc SQL: alter table tab1 modify col3 char(5); I det här fallet ändras inte ordningen på variablerna. Sidan 17

18 Subqueries En subquery är ett sätt att välja ut vissa rader från en tabell m,h,a, en annan tabell, t ex välja ut alla ordrar för kunder som ska betala med bankgiro från en styrtabell över alla kunders betalningssätt: create table bg_kunder as select * from kundordrar where kund_id in (select kund_id from betalningssatt where betsatt = 'BG'); SET-operatorer Subsqueries kan också kombineras med s.k. SET-operatorer; UNION, EXCEPT, INTERSECT och OUTER UNION för att man ska kunna kombinera resultater från frågorna på olika sätt. UNION Alla rader från båda frågorna. EXCEPT Rader som endast finns i den första frågan. INTERSECT Rader som finns i båda frågorna (gemensamma rader) OUTER UNION Konkatenerar frågeresultaten Exempel Subquery kombinerat med SET-operatorn INTERSECT Detta exempel skapar ett resultat med de rader som är gemensamma i båda frågorna: create table c as select * from sql.a intersect select * from sql.b; Sidan 18

19 Skapa macrovariabler Makrovariabler gör det möjligt att dynamiskt sätta ett värde, ändra text i ett SASprogram, eller kan användas för att dynamisk villkorsstyrning. Detta avsnitt behandlar endast översiktligt hur man kan skapa makrovariabler i Proc SQL. För mer information om makro och makrovariabler, se Del 4 av denna kurs. Exempel Skapa makrovariabel innehållande ett datum: Om man skulle vilja ta ut det senaste datumet från en tabell och spara det i en macrovariabel skriver man så här: select max(loaddate) into :MAXDATE from tab1; %PUT &MAXDATE; * -- Skriver ut värdet på macrovariabeln i loggen -- ; Exempel Skapa makrovariabel med unika värden SELECT DISTINCT: Och på det här sättet skapar man en macrovariabel som innehåller alla unika värden i en viss kolumn m.h.a. SELECT DISTINCT: select distinct country into :PRESENT_COUNTRIES from tab1; Observera att en SELECT DISTINCT är en tung fråga för en databas och kan därför ta relativt lång tid att utföra. Detta bör man tänka på när man jobbar med stora datamängder. Exempel Skapa makrovariabel med unika värden SELECT DISTINCT: I exemplet ovan hamnar alla värden i en enda lång sträng. Om man lättare vill kunna identifiera de olika värdena använder man SEPARATED BY som avgränsar varje värde i macrovariabeln: select distinct country into :PRESENT_COUNTRIES separated by '/' from tab1; Exempel Skapa flera makrovariabler i samma steg: Man kan också skapa flera macrovariabler i samma steg: select count(distinct orgnr), max(loaddate) into :UNIKAORG, :MAXDATE from tab1; I det här exemplet har vi en styrtabell med tre rader (en per tabell) som talar om vilka nyckelvariabler vi har för varje tabell: Sidan 19

20 select tabname, keyvar into :TAB1 - :TAB3, :KEYVAR1 - :KEYVAR3 from controltable; Eller, om man vill att programmet ska fungera även om man lägger till fler rader i styrtabellen, så här: proc sql noprint; select count(distinct tabname) into :ANTAL from controltable; select tabname, keyvar into :TAB1 - :TAB%left(&antal), :KEYVAR1 - :KEYVAR%left(&antal) from controltable; Exempel Skapa en makrovariabel som innehåller antal observationer: Räkna antal observationer i en tabell kan man göra på många sätt, här är ett exempel där man lägger resultatet i en macrovariabel: proc sql noprint; select count(*) into :N from tab1; NOPRINT medför att inget kommer att skrivas till outputfönstret. Den behövs inte när man använder Proc SQL för att skapa en tabell. Automatiska macrovariabler Proc SQL skapar också egna macrovariabler. Nedan följer en lista på de automatiska macrovariabler som alltid skapas: SQLOBS SQLRC SQLOOPS SQLXRC SQLXMSG Antal rader som exekverades av sql-satsen. Innehåller returvärden från proc sql, se i hjälpen vilka värden den antar och vad de betyder. Antalet loopar som proc sql exekverar. DBMS-specifika returkoder från Pass-Through. DBMS-specifika returkoder för fel returnerade från Pass-Through. Sidan 20

21 Sammanslagning av tabeller join I stället för att använda datasteg och MERGE för att slå ihop två eller flera tabeller kan man använda sig av join i Proc SQL. När man använder join får man fler möjligheter att styra vilket resultat man kommer att få av sammanslagningen. I exemplen nedan används följande tabeller: Namn Lön Id Namn Id Lön 1 Nisse Pelle Stina Anna Inner join En inner join returnerar en tabell som innehåller alla rader i den ena tabeller som matchar en eller flera rader i den andra tabellen. I en inner join kan det ingå upp till 16 tabeller. Gör vi en inner join mellan de två tabellerna ovan skulle vi få följande resultat: Inner join Id Namn Lön 1 Nisse Stina Anna 5000 För att göra joinen ovan finns det två sätt att skriva: create table ijoin as select n.id,namn,lon from namn as n,lon as l where n.id = l.id; Samma resultat får man med följande kod: create table ijoin as select n.id,namn,lon from namn as n inner join lon as l on n.id = l.id; Sidan 21

22 I exemplen ovan används ALIAS för tabellernas namn för att öka läsbarheten. Utan alias skulle den senaste joinen se ut så här: create table ijoin as select namn.id,namn,lon from namn inner join lon on nanm.id = lon.id; Visserligen helt klart läsligt, men med längre variabelnamn och fler variabler inblandade i joinen så blir det ganska snart betydligt snårigare. Outer join En outer join returnerar dels samma resultat som en inner join men dessutom returneras också de rader i den ena tabellen som inte matchar i den andra tabellen. I en outer join kan man bara använda två tabeller. Det finns tre olika typer av outer join: LEFT JOIN, RIGHT JOIN och FULL JOIN. Använder man LEFT JOIN är det alla värden i den vänstra tabellen som kommer med i resultattabellen oavsett om de matchar med någon av raderna i den högra tabellen. På motsvarande sätt fungerar RIGHT JOIN. En FULL JOIN gör att man får med samtliga rader från båda tabellerna. Exempel - left outer join Använder vi samma tabeller som i det förra exemplet och gör en LEFT OUTER JOIN med tabellen NAMN som vänstertabell får vi följande resultat: Left outer join Id Namn Lön 1 Nisse Pelle. 3 Stina Anna 5000 Vi får nu med alla rader som fanns i den vänstra tabellen NAMN, men Pelle finns inte med i tabellen LÖN så därför får variabeln Lön värdet missing för Pelle i resultattabellen. Och så här kan man skriva: create table ljoin as select n.id,namn,lon from namn as n left join lon as l on n.id = l.id; Exempel - right outer join En RIGHT OUTER JOIN används för att få med alla rader från den andra tabellen i SQL-satsen (givetvis skulle man lika gärna kunna ändra ordningen på tabellerna). Sidan 22

23 create table rjoin as select l.id,namn,lon from namn as n right join lon as l on n.id = l.id; Exempel - full outer join Använder man en en FULL OUTER JOIN får man med alla raderna från båda tabellerna. select * from namn as n full join lon as l on n.id = l.id; I exemplet ovan skrivs resultatet till outputfönstret. Vill man istället spara resultatet som en ny tabell måste man explicit ange de båda matchningsvariablerna i SELECTsatsen, så här: select n.id as namn_id, l.id as lon_id,... from Cartesian product En kartesisk produkt blir resultatet när man slår samman två tabeller där båda tabellerna har dubletter m.a.p. join-variablerna, man kan kalla det en många till många -join kanske. Resultatet blir en stor tabell som innehåller alla möjliga kombinationer av värdena som förekommer i de två tabellerna som slås ihop, vilket oftast inte är önskvärt. Summeringar I SELECT-satsen kan man använda en mängd olika funktioner som summa, medelvärde, max, min osv. Dessa anges i SELECT-satsen och bildar nya kolumner. Vill man göra en beräkning för en viss gruppering i materialet (jämför med CLASS/BY i Proc SUMMARY/MEANS) använder man i Proc sql GROUP BY. Sidan 23

24 Exempel Summering och MAX/MIN, grupperat Vi vill räkna ut innehavet i antal per idnummer (person) i datasetet TESTIHAV, dessutom vill vi se MAX och MIN. select idnr, sum(antal) as summa, max(antal) as max, min(antal) as min from kurs.testihav group by idnr; Index Med hjälp av Proc SQL är det enkelt att skapa enkla eller sammansatta index för ett dataset. Gör man ett enkelt index på bara en kolumn måste indexnamnet vara samma som namnet på kolumnen, innehåller indexet däremot flera kolumner får indexnamnet inte vara samma som något av kolumnnamnen. Index i SAS uppdateras om det görs någon förändring i datasetet med Proc SQL. create <UNIQUE> INDEX index-name ON table-name (column <,column>...); Genom att ange nyckelordet UNIQUE kan man säkerställa att en viss kolumn alltid har unika värden. Exempel - Skapa och ta bort ett index: I detta exempel skapas ett index på organisationsnummer i datasetet COMPANY. create index orgnr on company(orgnr); Index tas bort så här: drop index idx1 from tab1; SQL passthru Vissa variabelnamn är skyddade och kan orsaka fel, s.k. SQL passthru error. Dessa visas med en liten brädgård # framför variabelnamnet i loggen. Detta kan undvikas genom att sätta \ framför variabelnamnet. Länkar och litteraturtips Det finns en hel del matnyttig dokumentation kring Proc SQL i online-hjälpen för SAS. Online-hjälpen har i skrivande stund följande länk: Tips på en bok som beskriver grunderna på ett bra sätt men också innehåller tips som kan vara användbara för den något mer erfarne Proc SQL-användaren: Sidan 24

25 PROC SQL Beyond the Basics Using SAS av Kirk Paul Lafler Sidan 25

26 Att använda SAS metainformation SAS lägger automatiskt upp en hel del information OM den information som finns tillgänglig i den aktuella SAS-sessionen, d.v.s. metainformation. Exempel på sådan information är: Vilka FILE/LIBNAMEs som finns definierade och vad har de för fysisk sökväg Vilka dataset finns i ett visst LIB och vilka variabler dessa innehåller Hur SAS-options är satta Informationen finns upplagd som vyer i LIB SASHELP. Namnen på dessa vyer börjar med V, t.ex. SASHELP.VMEMBER som innehåller information (namn, typ etc.) om medlemmar i alla libraries som finns uppdefinierade. De vyer som finns är: VCATALG VCOLUMN VEXTFL VINDEX VMACRO VMEMBER VOPTION VSACCES VSCATLG VSLIB VSTABLE VSTABVW VSVIEW VTABLE VTITLE VVIEW Dessa vyer läses precis som vanliga dataset. Sidan 26

27 Det finns ett alternativt sätt att läsa in metadata som är mer effektivt än att läsa ovanstående vyer i datasteg. I Proc SQL, dvs. SAS miljö för SQL-satser, finns ett antal dictionaries upplagda. Dessa refereras genom att använda LIBNAME dictionary. T.ex. VMEMBER motsvaras här av tabellen dictionary.tables. Det går alltid betydligt snabbare att läsa denna information i ett SQL-steg än att läsa SASHELP-vyerna i ett datasteg. Dock finns inte all information tillgänglig här. De tabeller som finns är: CATALOGS COLUMNS EXTFILES INDEXES MACROS MEMBERS OPTIONS TABLES TITLES VIEWS Exempel - Ta reda på vilka dataset i ett bibliotek som innehåller en viss variabel: I detta exempel ska vi ta reda på vilka dataset i testlib som innehåller variabeln x1: Några dataset skapas i TESTLIB: data testlib.a testlib.b testlib.c(rename=(x1=x2)); x1='xxx'; Dataseten a och b innehåller därmed variabeln x1 och det är dessa datasetnamn som ska tas fram med metoderna nedan. Datasteg: data utdata; set sashelp.vcolumn(where=(libname='testlib' and name='x1') keep=libname memname name); Sqlsteg: create table utdata as select memname from dictionary.columns where libname='testlib' and name='x1'; Kommentar: Metoderna ovan ger samma resultat, men datasteget tog vid test över 30 (!!) sekunder medan sql-satsen tar 0,27 sekunder!! Skillnaden är extrem vid just metainformation om variabler från column/columns, men sql går alltid betydligt snabbare när man ska läsa metainformation från SAS. Detta är viktigt att ha i bakhuvudet när man vill använda SAS metainformation! Sidan 27

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14

Övningar i SQL. SQLAccess.doc Ove Lundgren 2000-11-14 Övningar i SQL Övningar i SQL Använd Access för att öva SQL (= Structured Query Language) Skapa tabeller med SQL 1. Ny databas: SQLÖVNING Klicka: Frågor > Ny > Design > OK >Stäng > SQL Radera ordet SELECT.

Läs mer

Introduktion till frågespråket SQL (v0.91)

Introduktion till frågespråket SQL (v0.91) DD1370: Databaser och Informationssystem Hösten 2014 Petter Ögren Introduktion till frågespråket SQL (v0.91) 13:e November Disclaimer: Dessa anteckningar har producerats under viss tidspress, och kan därför

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 3 Kap. 4 Kap. 5 utom

Läs mer

Structured Query Language (SQL)

Structured Query Language (SQL) Structured Query Language (SQL) Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Introduktion Enkla frågor (queries) Hämta en specifik kolumn Sök Sammanfattning

Läs mer

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LIVE. Exempelkod från föreläsningen. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LIVE Exempelkod från föreläsningen Plushögskolan Frågeutveckling inom MSSQL - SU14 Här kommer exempelkoden jag använde under föreläsningen Exemplen Constraints... 2 Transactions... 4 Views... 5 Functions...

Läs mer

Structured query language (SQL)

Structured query language (SQL) Structured query language SQL) Varför SQL? SQL är ett standardspråk som är oberoende av databashanteringssystemen som finns på marknaden. Med andra ord kommer du kunna arbeta mot nästan alla sorters relationsdatabaser

Läs mer

4. Kunna orientera sig mellan de olika fönstren

4. Kunna orientera sig mellan de olika fönstren Datorövning 1 Statistikens Grunder 1 Syfte 1 Lära sig läsa in data i SAS 2 Importera data från Excel 3 Lära sig skriva ut data med proc print 4 Kunna orientera sig mellan de olika fönstren Exempel Att

Läs mer

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata

Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen

Läs mer

WCMS-15, Webbutvecklare CMS

WCMS-15, Webbutvecklare CMS WCMS-15, Webbutvecklare CMS Övningstentamen, delkurs Dynamiska webbplatser (20 YH-poäng) Plats: Medieinstitutet, Malmö Tid: 25 november 2015, kl. 13.00-16.00 Tillåtna hjälpmedel: Papper, penna, suddgummi,

Läs mer

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik)

Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Databasföreläsning Databasens består av: Tabell Kolumner fält Rader poster (varje post är unik) Tabeller Personer Databas Nummer Namn Födelseår 1 Tina 1950 2 Siv 1965 3 Olle 1980 Platt databas: all information

Läs mer

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista Databaser Vad är en databas? Vad du ska lära dig: Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda

Läs mer

Alternativa metoder för sammanslagning av tabeller i SAS. Fredrik Bernström och Johan Elfman Konsulter SAS Institute

Alternativa metoder för sammanslagning av tabeller i SAS. Fredrik Bernström och Johan Elfman Konsulter SAS Institute Alternativa metoder för sammanslagning av tabeller i SAS Fredrik Bernström och Johan Elfman Konsulter SAS Institute Alternativa metoder för sammanslagning av tabeller i SAS Syfte med presentationen: Visa

Läs mer

Databasutveckling Introduktion till SQL och TSQL

Databasutveckling Introduktion till SQL och TSQL Databasutveckling Introduktion till SQL och TSQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Introduktion till SQL SELECT satsen, enkla frågor Hämta specifika kolumner Alias

Läs mer

1.Lär känna MS SQL Observera. Tips. Förberedelse

1.Lär känna MS SQL Observera. Tips. Förberedelse 1.Lär känna MS SQL 2008 Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill genomföra

Läs mer

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar

9. Between 10. Group by 11. Aggregatfunktionerna max, min, sum och avg 12. Nästlade sökningar FÖ 8: Databaskursen 1. SQL 2. Utsökningar mot en tabell 3. Od Order by 4. Funktionerna upper, lower och initcap 5. Konkatenering 6. Kolumnalias 7. Distinct 8. Hantera nullvärden med nvl-funktionen 9. Between

Läs mer

Databaser och. SQL, utsökningar mot en tabell

Databaser och. SQL, utsökningar mot en tabell Databaser och Informationssystem 5 hp IK008 Föreläsning 7 SQL, utsökningar mot en tabell Övningsuppgifter Övningstabell SQL> desc personal Name Null? Type ------------------------------------- --------

Läs mer

Intro till SPSS Kimmo Sorjonen (0811)

Intro till SPSS Kimmo Sorjonen (0811) 1 Intro till SPSS Kimmo Sorjonen (0811) 1. Att mata in data i SPSS 1. Klicka på ikonen för SPSS. 2. Välj alternativet Type in data och klicka på OK. 3. Databladet har två flikar: Data view och Variable

Läs mer

Målet för D1 är att studenterna ska kunna följande: Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt

Målet för D1 är att studenterna ska kunna följande: Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt Datorövning 1 Statistisk teori med tillämpningar Repetition av SAS Syfte Syftet med Datoröving 1 (D1) är att repetera de SAS-kunskaperna från tidigare kurser samt att ge en kort introduktion till de studenter

Läs mer

Kapitel 4 Arkivmenyn Innehåll

Kapitel 4 Arkivmenyn Innehåll Kapitel 4 Arkivmenyn Innehåll ARKIVMENYN...2 Byt aktuell användare...2 Utskrift till skärm eller skrivare...3 SQL verktyget...4 Ny SQL...4 Hämta SQL...5 Spara SQL...5 Kör SQL...5 Visa som...5 Avsluta...5

Läs mer

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht...

Laboration SQL. Kom igång. http://www.tfe.umu.se/courses/systemteknik/webbkurser/d&w/laborationer/sql.ht... Page 1 of 5 Laboration SQL Syfte: Under denna laboration skall du bekanta dig med SQL. När laborationen är genomförd skall du klara av att själv formulera enklare SQL-frågor för att kunna ta fram information

Läs mer

Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt

Använda några av de vanligaste PROC:arna. Sammanställa och presentera data i tabeller och grafiskt Datorövning 1 Statistisk teori med tillämpningar Repetition av SAS Syfte Syftet med Datoröving 1 (D1) är att repetera de SAS-kunskaperna från tidigare kurser samt att ge en kort introduktion till de studenter

Läs mer

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs TE/RC Datorövning 1 Syfte: 1. Lära sig läsa in data i SAS 2. Importera data från Excel 3. Lära sig skriva ut data med proc print 4. Kunna orientera

Läs mer

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Du skall naturligtvis visa körexempel med output där det behövs i din rapport! och databprogrammering Christilinda Göstson - PL/SQL, paket och ref cursor Du skall naturligtvis visa körexempel med output där det behövs i din rapport! OBS! Denna labb redovis i labbrapport via mail

Läs mer

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14 Labb LABB 1 Databassagan och en rundtur i databasers märkliga värld Plushögskolan Frågeutveckling inom MSSQL - SU14 I Microsoft SQL-Server Management Studio kan man arbeta på olika sätt. Antingen via användargränssnittet

Läs mer

Sample exam questions. Database exam TIG058

Sample exam questions. Database exam TIG058 Sample exam questions Database exam TIG058 Distribution of topics covered 1. Grundläggande om Databaser och Databashanterare (5p) 2. SQLite-databashanteraren (5p) 3. SQL - SELECT, ORDER BY, WHERE, LIMIT

Läs mer

Design och underhåll av databaser

Design och underhåll av databaser Design och underhåll av databaser 1. Modell av verkligheten 2. Normalformer 3. Introduktion till DDL 4. Skapa databaser 5. Skapa tabeller 6. Skapa index 7. Restriktioner 8. Ta bort databaser, tabeller

Läs mer

Starta MySQL Query Browser

Starta MySQL Query Browser Starta MySQL Query Browser 1. Starta MySQL Query Browser genom att antingen välja i Startmenyn: 2. eller leta upp ikonen på skrivbordet för start av MySQL Query Browser och dubbelklicka på den. 3. Du bör

Läs mer

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga.

SQL, nästlade delfrågor 3-19. Nästlade delfrågor. En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. SQL, nästlade delfrågor 3-19 Nästlade delfrågor SQL har en mekanism för nästling av delfrågor: En nästlda delfråga är ett select-from-where uttryck inom where-klausulen i en annan fråga. Delfrågor används

Läs mer

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse

Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse Lär känna MS SQL 2008 / Övning Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill

Läs mer

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation

SQL. Structured Query Language. Frågespråk för att används för. Kommandon. data åtkomst data manipulation SQL Structured Query Language Frågespråk för att används för data åtkomst data manipulation Kommandon Lägga in ny data, INSERT Ändra data, UPDATE Radera data, DELETE Hämta data, SELECT mfl 2005-10-13 Gk/ÖK:ITO,

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

INNEHÅLL SQL DEL 2. Funktioner inbyggda Aggregatfunktioner Skalärfunktioner. Chapter 11. Beginning SQL Server 2008 for Developers

INNEHÅLL SQL DEL 2. Funktioner inbyggda Aggregatfunktioner Skalärfunktioner. Chapter 11. Beginning SQL Server 2008 for Developers INNEHÅLL SQL DEL 2 Funktioner inbyggda Aggregatfunktioner Skalärfunktioner Chapter 11. Beginning SQL Server 2008 for Developers 1 FUNKTIONER, INBYGGDA Det finns ett mängd med funktionen du kan använd dig

Läs mer

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig?

07/11/14. Databasteknik och informationssystem DD1370 F2. Allmänna frågor. Är Lab0 svårbegriplig? Nu: Clickers. Är Kurswebben svårbegriplig? Allmänna frågor Databasteknik och informationssystem DD1370 F2 Petter Ögren Är Kurswebben svårbegriplig? Är lab0 svårbegriplig? Är bonus-poängen tydliga? Har ni lyckats installera Open Office? Fungerar

Läs mer

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL)

Idag. 1. Från modell till databasstruktur. 2. Prata med databaser (frågepsråket SQL) Idag 1. Från modell till databasstruktur 2. Prata med databaser (frågepsråket SQL) DD1370 (Föreläsning 3) Databasteknik och informationssystem 7,5 hp Hösten 2008 1 / 22 Från verklighet via modell till

Läs mer

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner

Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner INNEHÅLL Uppstart Inloggning SSMS Skapa Databas Skapa Tabell Skapa Diagram, Fk, RI Hantering av Index, Pk, Fk, Ix Constraints Beräknande fält Några funktioner Kapitel 5 och 6. Beginning SQL Server 008

Läs mer

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas

Från verklighet via modell till databas. Idag. Testa reglerna på varuhusmodellen. Från verklighet via modell till databas Idag 1. Från modell till databasstruktur Från verklighet via modell till databas När vi analyserat den värld vi vill representera i en databas har vi tagit med alla möjliga kopplingar och beskrivit dem

Läs mer

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index

DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index INNEHÅLL SQL DEL 4 DDL Kommandon CREATE/DROP Database CREATE /ALTER/DROP Table ALTER/ADD/DROP Column CREATE /ALTER/DROP Index Chapter 3, 6, 8 delar av. Beginning SQL Server 2008 for Developers 1 CREATE

Läs mer

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3.

Informationssystem och Databasteknik, 2I-1100 HT2001. Relationsalgebra. Relationsalgebran är sluten: R 1 op R 2 R 3. Primtiva operatorer projektion π selektion σ union differens - kryssprodukt X Relationsalgebra Tilldelning := Relationsalgebran är sluten: Med hjälp av dessa operatorer kan andra (icke-primitiva) operatorer

Läs mer

Lösningar till tentamen i EDAF75

Lösningar till tentamen i EDAF75 Lösningar till tentamen i EDAF75 4 april 2018 Lösning 1 (a) Här är ett förslag till E/R-modell: Det finns flera rimliga alternativa sätt att modellera, så du behöver inte vara orolig bara för att du inte

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner

Databasföreläsning. Del 2 lagrade procedurer, vyer och transaktioner Databasföreläsning Del 2 lagrade procedurer, vyer och transaktioner Lagrade procedurer (Stored procedures) En stored procedure är en procedur (funktion) lagrad i en databas, och exekveras direkt på databasservern

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs TE/RC Datorövning 4 Syfte: 1. Lära sig beräkna konfidensintervall och täckningsgrad 2. Lära sig rita en exponentialfördelning 3. Lära sig illustrera

Läs mer

3. Dynamiska webbplatser, 20 Yhp (4 v)

3. Dynamiska webbplatser, 20 Yhp (4 v) Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.m Webbutvecklare CMS, Yh-utbildning, 2 år, 400 Yhp, Medieinstitutet, www.medieinstitutet.se, sida 3/12 3. Dynamiska webbplatser, 20

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.

Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas. DB01 - Remote DB01 kan användas på ett nytt sätt. Vi kallar det för remote. Det innebär att man kan peka ut databaser på nätverket som mål för export eller import. Denna funktion är avsedd för att flytta

Läs mer

Introduktion till Jasmine 1.2 ODQL

Introduktion till Jasmine 1.2 ODQL Introduktion till Jasmine 1.2 ODQL I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL. 1 ODQL miljön Man kan enklast köra ODQL mot Jasmine från ett vanligt Command

Läs mer

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post

Tabeller och kolumner SQL. Lägga till en ny post. Lägga till en ny post SQL Structured Query Language Frågespråk för att används för data åtkomst data manipulation Kommandon Lägga in ny data, INSERT Ändra data, UPDATE Radera data, DELETE Hämta data, SELECT mfl Rader Tabeller

Läs mer

Lektion 5 HTML, CSS, PHP och MySQL

Lektion 5 HTML, CSS, PHP och MySQL Lektion 5 HTML, CSS, PHP och MySQL I den här lektionen behandlas i huvudsak PHP för att läsa information från en databas, MySQL. Det förutsätts att tidigare lektioner är gjorda, eller att du har tillräckliga

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Databaser, design och programmering Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company

Läs mer

Databaser. Vad du ska lära dig: Ordlista

Databaser. Vad du ska lära dig: Ordlista Databaser Vad du ska lära dig: Ordlista Använda UML för att modellera ett system Förstå hur modellen kan översättas till en relationsdatabas Använda SQL för att ställa frågor till databasen Använda en

Läs mer

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU

! Teori och praktik. ! Ändringar från förra året. ! Examination (tenta, projekt) LiU. ! Varför ni? ! Varför överhuvudtaget? LiU Databaser Design och programmering, IDA Kursen, diverse praktiskt Varför databaser? Vad är en databas? Andra viktiga begrepp Kursöversikt Teori och praktik Fö och bok lektioner, labbar i projekt (3,5hp=100h)

Läs mer

Funktionsbeskrivning

Funktionsbeskrivning Funktionsbeskrivning [DB01 Uttagsprogram - remote] 2009-11-06 Version: Beteckning: Ändringshistorik Revision Datum Av Kommentar Granskare Godkännare Jan Rundström/Torgny Fridlund 2009-11-06 2 (17) Innehållsförteckning

Läs mer

Grunderna i SQL del 1

Grunderna i SQL del 1 Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE Kap. 3 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join Kap. 4 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 5 utom

Läs mer

VAD GÖR DU / VEM ÄR DU?

VAD GÖR DU / VEM ÄR DU? INNEHÅLL Vad blir din roll Databaser vad är och varför Terminologi Datamodellering vad är och varför Utvecklingsprocessen SQL vad är det Data / Information / Kunskap Kapitel 1 delar av. Praktisk Datamodellering

Läs mer

Introduktionskurs i SAS. Del 1 Datastegsprogrammering

Introduktionskurs i SAS. Del 1 Datastegsprogrammering Introduktionskurs i SAS Del 1 Datastegsprogrammering Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens (Knowit Information Management) skriftliga

Läs mer

TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE

TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE ÖVERBLICK 10 inställningar I Enterprise Guide 3 tips för processflöden Utforska med Data Explorer 5 användbara kortkommandon

Läs mer

1. Lära sig beräkna kon densintervall och täckningsgrad 2. Lära sig rita en exponentialfördelning 3. Lära sig illustrera centrala gränsvärdessatsen

1. Lära sig beräkna kon densintervall och täckningsgrad 2. Lära sig rita en exponentialfördelning 3. Lära sig illustrera centrala gränsvärdessatsen Datorövning 2 Statistikens Grunder 2 Syfte 1. Lära sig beräkna kon densintervall och täckningsgrad 2. Lära sig rita en exponentialfördelning 3. Lära sig illustrera centrala gränsvärdessatsen Exempel Beräkna

Läs mer

Kom igång med Stata. Introduktion

Kom igång med Stata. Introduktion Kom igång med Stata Introduktion Stata är det vanligaste statistikprogrammet bland de på institutionen som bedriver mycket kvantitativ forskning. Det är relativt enkelt att lära sig, samtidigt som det

Läs mer

Målet för D3 är att studenterna ska kunna följande: Dra slumptal från olika sannolikhetsfördelningar med hjälp av SAS

Målet för D3 är att studenterna ska kunna följande: Dra slumptal från olika sannolikhetsfördelningar med hjälp av SAS Datorövning 3 Statistisk teori med tillämpningar Simulering i SAS Syfte Att simulera data är en metod som ofta används inom forskning inom ett stort antal ämnen, exempelvis nationalekonomi, fysik, miljövetenskap

Läs mer

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö.

I denna laboration skriver jag inte ut resultatet på de flesta frågorna utan du kör dem själv i din miljö. Laboration 2, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall vi jobba vidare på bildatabasen som vi började på förra gången. Vi skall ändra fält och lära oss att

Läs mer

ADO.NET Murach Kapitel 17-20

ADO.NET Murach Kapitel 17-20 Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan

Läs mer

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad 1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen

Läs mer

Introduktionskurs i SAS

Introduktionskurs i SAS Introduktionskurs i SAS Del 4 Makroprogrammering Detta material skyddas av upphovsrättslagen och får inte kopieras eller på annat sätt spridas utan upphovsmannens (Knowit Software Solutions AB) skriftliga

Läs mer

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010

Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010 v. 2015-01-07 ANVISNINGAR Datorlaboration 1 Deskriptiv statistik med hjälp av MS Excel vers. 2010 Detta häfte innehåller kortfattade anvisningar om hur ni använder Excel under denna laboration. Be om hjälp

Läs mer

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra.

För att XCOPY i SQL Server Express ska fungera måste data och logg ligga i samma mapp, vilket naturligtvis inte är så bra. 1 Datafiler tillhör alltid en filgrupp. Det måste alltid finnas en PRIMARY group. Det är inget som hindrar att datafiler på olika diskar tillhör samma filgrupp. PRIMARY gruppen innehåller huvudfilen till

Läs mer

SQLs delar. Idag. Att utplåna en databas. Skapa en databas

SQLs delar. Idag. Att utplåna en databas. Skapa en databas Idag SQLs delar Hur skapar vi och underhåller en databas? Hur skapar man tabeller? Hur får man in data i tabellerna? Hur ändrar man innehållet i en tabell? Index? Vad är det och varför behövs de? Behöver

Läs mer

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server

DVA234 Databaser. Dag Nyström, Introduktion till databaser och MS SQL Server DVA234 Databaser 1(6) Kurs: DVA234 Databaser Version: 4, uppdaterad 2016-03-21 Utvecklad av: Dag Nyström, dag.nystrom@mdh.se Laboration 1: Introduktion till databaser och MS SQL Server I den här laborationen

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs

Statistikens grunder 1 och 2, GN, 15 hp, deltid, kvällskurs Statistikens grunder och 2, GN, hp, deltid, kvällskurs TE/RC Datorövning 3 Syfte:. Lära sig göra betingade frekvenstabeller 2. Lära sig beskriva en variabel numeriskt med proc univariate 3. Lära sig rita

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

Kapitel 15: Data/Matrix Editor

Kapitel 15: Data/Matrix Editor Kapitel 15: Data/Matrix Editor 15 Översikt över Data/Matrix Editor... 226 Översikt över list-, data- och matrisvariabler... 227 Starta en Data/Matrix Editor-session... 229 Mata in och visa cellvärden...

Läs mer

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras. Laboration 1, Databashantering med MySQL Av: Marcus Rejås I denna laboration skall du se till att du kommer åt databasmotorn och att det fungerar. Du kommer också att skapa en tabell

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor 732G11 Linköpings universitet 2011-02-01 1 2 3 Strukturdiagram Strukturdiagram används för att visa hur ett program fungerar. Man kan se alla val och upprepningar som sker i programmet. Består av tre (!)

Läs mer

Statistik över heltal

Statistik över heltal Övningsuppgift Statistik över heltal Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande

Läs mer

Vad är SQL? Introduktion till SQL

Vad är SQL? Introduktion till SQL Introduktion till SQL Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Vad är SQL? Structured Query Language (SQL) är ett standardiserat frågespråk för att hämta och modifiera data i en

Läs mer

Tentamen för DD1370 Databasteknik och informationssystem

Tentamen för DD1370 Databasteknik och informationssystem Tentamen för DD1370 Databasteknik och informationssystem 24 Augusti 2015 Hjälpmedel: Inga hjälpmedel utom papper och penna Tänk på: Skriv högst en uppgift på varje blad. Använd endast framsidan på varje

Läs mer

Programmering i C, 7,5 hp

Programmering i C, 7,5 hp Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31 switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata

Läs mer

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media

SQL del 2. Christer Stuxberg Institutionen för Informatik och Media SQL del 2 Christer Stuxberg christer.stuxberg@im.uu.se Institutionen för Informatik och Media Översikt Repetition SELECT INSERT Mer SELECT Null sökning Gruppering (GROUP BY) Begränsad gruppering (HAVING)

Läs mer

Se kurshemsidan för användbara länkar för att genomföra denna laboration.

Se kurshemsidan för användbara länkar för att genomföra denna laboration. Laboration, SQL DML Observera Det är fullt tillåtet att göra laborationen innan laborationstillfället. Observera dock att alla uppgifter måste kunna redovisas på redovisningstillfället. Laborationen ska

Läs mer

JavaScript del 5 Funktioner

JavaScript del 5 Funktioner JavaScript del 5 Funktioner När man skriver JavaScriptkod eller program i andra programmeringsspråk för den delen så kan det finnas anledningar till att man vill dela upp sitt stora program i flera mindre

Läs mer

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F) L0009B Moment FL 1: Kursintroduktion. Kursinformation: G:\L0009B\Allmänt\KursInformationL0009B.pdf (F) Kursplan: Se https://portal.student.ltu.se/stuka/kurs.php?kurs=l0009b&lang=swe (F) Allt som markerats

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

Läs mer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Att förstå variabler Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata. Vad är en variabel? En variabel är en plats att lagra information. Precis

Läs mer

Programmering II (ID1019) :00-11:00

Programmering II (ID1019) :00-11:00 ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Databasspråket SQL - online.

Databasspråket SQL - online. Webprogrammering och databaser Fö 5 Databasspråket SQL - online. Innehåll: Viktiga kommandon och konstruktioner i SQL, både DDL och DML. Utgångspunkt: en databas om ett varuhus (The Jonson Brothers Company.

Läs mer

Datorövning 5. Statistisk teori med tillämpningar. Lära sig beräkna konfidensintervall och utföra hypotestest för:

Datorövning 5. Statistisk teori med tillämpningar. Lära sig beräkna konfidensintervall och utföra hypotestest för: Datorövning 5 Statistisk teori med tillämpningar Hypotestest i SAS Syfte Lära sig beräkna konfidensintervall och utföra hypotestest för: 1. Populationsmedelvärdet, µ. 2. Skillnaden mellan två populationsmedelvärden,

Läs mer

732G16: Databaser - Design och programmering

732G16: Databaser - Design och programmering 732G16: Databaser - Design och programmering Eva L. Ragnemalm, IDA (eva.ragnemalm@liu.se) Johan Falkenjack, IDA (johan.falkenjack@liu.se) Fö 1 Introduktion 2 Kursöversikt Teori och praktik Kursbok, lektionshäfte,

Läs mer

Karlstads Universitet, Datavetenskap 1

Karlstads Universitet, Datavetenskap 1 DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 PHP Hypertext Preprocessor Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren,

Läs mer

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar:

DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL. r s använder vi för att uttrycka frågor där ordet alla figurerar: DIVISIONSEXEMPEL RELATIONSALGEBRA OCH SQL r s använder vi för att uttrycka frågor där ordet alla figurerar: Ex. Vilka personer har stamkundskort vid ALLA klädesbutiker i stad X? Vilka personer har bankkonto

Läs mer

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet.

1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet. 1.1 Skapa ett Inline-Script som skapar filen För att skapa ett inline script drar man InLine till där man vill ha själva scriptet. För att skapa en data-fil har jag i, simon-uppgiften, skapat ett InLine-script

Läs mer

Att hämta organisationers publikationsposter ur DiVA

Att hämta organisationers publikationsposter ur DiVA Att hämta organisationers publikationsposter ur DiVA Ulf Kronman, 2011-08- 08. Version 1.0 Följande guide beskriver hur man kan ladda ned kompletta publikationsposter i så kallat CSV- format 1 för organisationer

Läs mer

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query). Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.

Läs mer

729G04 Programmering och diskret matematik. Föreläsning 7

729G04 Programmering och diskret matematik. Föreläsning 7 729G04 Programmering och diskret matematik Föreläsning 7 Föreläsningsöversikt Information Interaktion via text Läsa från fil Skriva till fil Spara och läsa abstrakta datatyper från fil Information Felaktigt

Läs mer

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information. Vad är en databas? Exempel på databaser: Kortregister på kontor Sjukvårdsjournal Bokregister på bibliotek Medlemsregister i en förening Kundregister på företag Telefonkatalogen Databas = Organiserad samling

Läs mer