55 op laskennan poimintakuvaus

Koko: px
Aloita esitys sivulta:

Download "55 op laskennan poimintakuvaus"

Transkriptio

1 55 op laskennan poimintakuvaus --- LUONNOS ---- Kerätään ensin perusjoukko, opiskelijat, pisteet, läsnäolotiedot omina osajoukkoina Virran tiedoista ja nämä osat yhdistellään jokaisen opiskelijan vuosijanaksi jotta hänen kohdalla voi suorittaa tilastovuosittain pankkilaskelmat vuosi vuodelta opiskelujen alusta. Lyhyt kuvaus kokonaislaskentaprosessista: Lasketaan pisteet Haetaan läsnäolotiedot Haetaan opiskeluoikeustiedot Poimitaan keväällä aloittaneet Poimitaan kaikki tilastovuoden uudet opiskelijat Alustetaan pankkitiedot Lasketaan kevällä aloittaneiden >= 27 op keränneet Lasketaan kumulatiivinen pankkitili Pankkisaldot kumulatiivisen laskennan jälkeen Kerätään yhteen opiskelijat Loppuraportti ylläolevasta per tilastovuosi Tilastovuosi: 20.9.Tilastovuosi Edellinen lukuvuosi: 1.8.tilastovuosi tilastovuosi Aloittanut keväällä: Tilastovuoden aloituspäivämäärän kuukausi <= 7 Raportti Extravipusessa Esimerkki pankkilaskelma Tarkistustiedostot Mittarit Kysymykset ja vastaukset 1. Perusjoukko Opintopisteet Kaikki Virta lajin 2 (=muu opintosuoritus on valmiiksi poimittu näkymässä jossa opintopisteille poimitaan hyväksymispäivämäärä jos su oritukselle sellainen on, muuten päivämäärä on suorituksen päivämäärää. Pisteet lasketaan lukuvuosittain (edellinen lukuvuosi : syys 1.8.TILASTOVUOSI TILASTOVUOSI-1 kevät 1.1.TILASTOVUOSI TILASTOVUOSI Opiskelijoille joille tälle ajanjaksolle olemassa aktiivinen alempi/ylempi korkeakoulututkinto oikeus (opiskeluoikeus tyyppiä 2, 4 tai AMK opiskelija (opiskeluoikeustyyppi 1 ja tältä ajalta kertyneet opintopisteet per lukukausi ja niiden summa. Vain lehtitason suorituksia. Näkymä (View kaikista Virran lajin 2 (muu suoritus josta poimitaan opintosuoritukselle sen hyväksilukupäivämäärä, jos sellainen on, muuten poimitaan suorituspäivämäärä

2 CREATE VIEW [Opintosuoritus_pvm] AS Opintopisteiden hyväksilukupvm näkymä Expand source SELECT CASE WHEN OH.Hyvaksilukupaivamaara IS NOT NULL THEN OH.Hyvaksilukupaivamaara ELSE OS.Suorituspaivamaara, END AS suorpvm OS.Suorituspaivamaara, OH.Hyvaksilukupaivamaara, OS.id AS opintosuoritusid, OS.OpiskelijaID, OS.Laajuus, OL.Koodi, OS.db FROM WHERE Opintosuoritus OS JOIN Opintosuorituksen_laji OL ON OL.id = OS.Opintosuorituksen_lajiID LEFT JOIN Opsuorituksen_hyvaksiluku OH ON OH.OpintosuoritusID = OS.id OL.Koodi = '2' Taulu johon kerätään opintopisteet lukukausittain (edellinen syys ja kevät tilastovuosittain per opiskelija: Pisteet55 Expand CREATE TABLE [Pisteet55]( source [oppilaitos] [varchar](20 NOT NULL, [oppilaitostunnus] [varchar](10 NOT NULL, [hetu] [varchar](11 NOT NULL, [opiskelijaavain] [varchar](100 NOT NULL, [opiskeluoikeusavain] [varchar](100 NULL, [vuosi] [int] NOT NULL, [edellinen_lv_syys_pisteet] [int] NULL CONSTRAINT [DF_Pisteet55_edellinen_lv_syys_pisteet] DEFAULT ((0, [edellinen_lv_kevat_pisteet] [int] NULL CONSTRAINT [DF_Pisteet55_edellinen_lv_kevat_pisteet] DEFAULT ((0, [summa] [int] NULL CONSTRAINT [DF_Pisteet55_summa] DEFAULT ((0, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_Pisteet55_reg_datum] DEFAULT (getdate( Alkuun

3 AMK pisteet per tilastovuosi per korkeakoulu AMK Opintopisteet per lukuvuosi varchar(4 varchar(20 Expand source IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Oppilaitos TRUNCATE TABLE #param INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #tkopisk ( oppilaitostunnus varchar(6, hetu varchar(11, -- Henkilötunnus opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, opes int, -- Edellisenä syyslukukautena ( opintopisteiden määrä opek int -- Edellisenä kevätlukukautena ( opintopisteiden määrä CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelijaavain ON #tkopisk (opiskelijaavain

4 TRUNCATE TABLE #tkopisk INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeusavain,opiskelu oikeus_id SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id, opiskeluoikeusavain = oo.avain, opiskeluoikeus_id = oo.id FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' --aktiivinen p.id IN ( SELECT OS.OpiskelijaID FROM Opintosuoritus_pvm OS WHERE 1 = 1 os.db OS.suorpvm BETWEEN cast(cast(@vuosi as int-1 AS varchar+'-08-01' cast(@vuosi AS varchar +'-07-31' OS.suorpvm >= OO.Alkamispaivamaara oo.id NOT IN (SELECT opiskeluoikeus_id FROM #tkopisk oo.id NOT IN (SELECT OOP.id FROM Opiskeluoikeus OOP WHERE OOP.Paattymispaivamaara <= cast(cast(@vuosi as int-1 AS varchar+'-08-01' OOP.db INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeusavain,opiskelu oikeus_id SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain

5 FROM, opiskelija_id = p.id, opiskeluoikeusavain = oo.avain, opiskeluoikeus_id = oo.id Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' --aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' p.id NOT IN ( SELECT OS.OpiskelijaID FROM Opintosuoritus_pvm OS WHERE 1 = 1 os.db OS.suorpvm BETWEEN cast(cast(@vuosi as int-1 AS varchar+'-08-01' cast(@vuosi AS varchar +'-07-31' -- Tässä lisäys Opiskeluoikeuden alkamisen jälkeen OS.suorpvm >= OO.Alkamispaivamaara oo.id NOT IN (SELECT opiskeluoikeus_id FROM #tkopisk oo.id NOT IN (SELECT OOP.id FROM Opiskeluoikeus OOP WHERE OOP.Paattymispaivamaara <= cast(cast(@vuosi as int-1 AS varchar+'-08-01' OOP.db IF OBJECT_ID('tempdb..#pisteet' IS NOT NULL BEGIN TRUNCATE TABLE #pisteet DROP TABLE #pisteet END CREATE TABLE #pisteet (

6 opiskelija_id int NOT NULL, opiskeluoikeus_id int, opintosuoritus_id int NOT NULL, laajuus decimal(18,6 NOT NULL, suoritus_pvm date NOT NULL, es bit, ek bit CREATE NONCLUSTERED INDEX IX_pisteet_opiskelija_id ON #pisteet (opiskelija_id INCLUDE (opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm CREATE NONCLUSTERED INDEX IX_pisteet_suoritus_pvm ON #pisteet (suoritus_pvm INCLUDE ([opiskelija_id],[opiskeluoikeus_id],[laajuus] INSERT INTO #pisteet (opiskelija_id,opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm,es,ek SELECT opiskelija_id = s.opiskelijaid,opiskeluoikeus_id = s.opiskeluoikeusid,opintosuoritus_id = s.id,laajuus = s.laajuus,suoritus_pvm = OS.suorpvm,es = CASE WHEN OS.suorpvm BETWEEN CAST(cast(@vuosi as int-1 AS varchar+'-08-01' CAST(cast(@vuosi AS int-1 AS varchar+'-12-31' THEN 1 ELSE 0 END,ek = CASE WHEN OS.suorpvm BETWEEN CAST(@vuosi AS varchar+'-01-01' CAST(@vuosi AS varchar+'-07-31' THEN 1 ELSE 0 END FROM Opintosuoritus s INNER JOIN Opintosuoritus_pvm OS ON OS.opintosuoritusid = s.id WHERE 1=1 s.db OS.db s.id NOT IN (SELECT ss.opintosuoritusid FROM Op_suor_sisaltyvyys ss WHERE ss.db SET opes=( SELECT cast(round(sum( CASE WHEN s.es = 1 THEN s.laajuus ELSE 0 END,0 AS int FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id s.opiskeluoikeus_id=t.opiskeluoikeus_id GROUP BY s.opiskelija_id WHERE opes IS NULL

7 SET opek=( SELECT cast(round(sum( CASE WHEN s.ek = 1 THEN s.laajuus ELSE 0 END,0 AS int FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id s.opiskeluoikeus_id=t.opiskeluoikeus_id GROUP BY s.opiskelija_id WHERE opek IS NULL set opes=0 WHERE opes IS NULL set opek=0 WHERE opek IS NULL -- opiskeluoikeusavain SET opiskeluoikeus_id = o.id, opiskeluoikeusavain = o.avain INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id WHERE 1=1 o.db lt.db oj.db -- tutkinto-tyyppinen ot.koodi IN ('1' kt.koodi IN ('1' --aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' SELECT AS oppilaitos,t.oppilaitostunnus,coalesce(t.hetu,'' "hetu", T.opiskelijaAvain, T.opiskeluoikeusAvain,@vuosi AS vuosi

8 ,coalesce(t.opes,0 "edellinen_lv_syys_pisteet" -- ( ,coalesce(T.opek,0 "edellinen_lv_kevat_pisteet" -- ( ,(T.opes + T.opek "Summa" -- opes + opek DROP TABLE #tkopisk DROP TABLE #pisteet DROP TABLE #param

9 YO Opintopisteet per lukuvuosi varchar(4 varchar(20 Expand source IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Yliopisto INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #tkopisk ( oppilaitostunnus varchar(6, hetu varchar(11, -- Henkilötunnus opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, opes int, -- Edellisenä syyslukukautena ( opintopisteiden määrä opek int -- Edellisenä kevätlukukautena ( opintopisteiden määrä CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelijaavain ON #tkopisk

10 (opiskelijaavain INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id SELECT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id WHERE 1=1 h.db p.db -- tutkinto-oikeus p.id IN ( SELECT oo.opiskelijaid FROM Opiskeluoikeus oo INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 oo.db lt.db -- tutkinto-tyyppinen opiskeluoikeus ot.koodi IN ('2','4' kt.koodi IN ('1' -- aktiivinen p.id in ( SELECT FROM OS.OpiskelijaID Opintosuoritus_pvm OS JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = OS.OpiskelijaID WHERE 1 = 1 os.db OS.suorpvm BETWEEN cast(cast(@vuosi as int-1 AS varchar+'-08-01' cast(@vuosi AS varchar +'-07-31' OS.suorpvm >= oo.alkamispaivamaara p.id NOT IN (SELECT opiskelija_id FROM #tkopisk INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id SELECT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id WHERE 1=1 h.db p.db -- tutkinto-oikeus

11 p.id IN ( SELECT oo.opiskelijaid FROM Opiskeluoikeus oo INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 oo.db lt.db -- tutkinto-tyyppinen opiskeluoikeus ot.koodi IN ('2','4' kt.koodi IN ('1' -- aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' oo.id NOT IN (SELECT OOP.id FROM Opiskeluoikeus OOP WHERE OOP.Paattymispaivamaara <= cast(cast(@vuosi as int-1 AS varchar+'-08-01' OOP.db p.id NOT IN ( SELECT FROM OS.OpiskelijaID Opintosuoritus_pvm OS JOIN Opiskeluoikeus OO ON OO.OpiskelijaID = OS.OpiskelijaID WHERE 1 = 1 os.db OS.suorpvm BETWEEN cast(cast(@vuosi as int-1 AS varchar+'-08-01' cast(@vuosi AS varchar +'-07-31' OS.suorpvm >= oo.alkamispaivamaara p.id NOT IN (SELECT opiskelija_id FROM #tkopisk IF OBJECT_ID('tempdb..#pisteet' IS NOT NULL BEGIN TRUNCATE TABLE #pisteet DROP TABLE #pisteet END CREATE TABLE #pisteet ( opiskelija_id int NOT NULL, opiskeluoikeus_id int, opintosuoritus_id int NOT NULL, laajuus decimal(18,6 NOT NULL, suoritus_pvm date NOT NULL, es bit, ek bit

12 CREATE NONCLUSTERED INDEX IX_pisteet_opiskelija_id ON #pisteet (opiskelija_id INCLUDE (opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm CREATE NONCLUSTERED INDEX IX_pisteet_suoritus_pvm ON #pisteet (suoritus_pvm INCLUDE ([opiskelija_id],[opiskeluoikeus_id],[laajuus] INSERT INTO #pisteet (opiskelija_id,opiskeluoikeus_id,opintosuoritus_id,laajuus,suoritus_pvm,es,ek SELECT opiskelija_id = s.opiskelijaid,opiskeluoikeus_id = s.opiskeluoikeusid,opintosuoritus_id = s.id,laajuus = s.laajuus,suoritus_pvm = OS.suorpvm,es = CASE WHEN OS.suorpvm BETWEEN CAST(cast(@vuosi as int-1 AS varchar+'-08-01' CAST(cast(@vuosi AS int-1 AS varchar+'-12-31' THEN 1 ELSE 0 END,ek = CASE WHEN OS.suorpvm BETWEEN CAST(@vuosi AS varchar+'-01-01' CAST(@vuosi AS varchar+'-07-31' THEN 1 ELSE 0 END FROM Opintosuoritus s INNER JOIN Opintosuoritus_pvm OS ON OS.opintosuoritusid = s.id WHERE 1=1 s.db OS.db s.id NOT IN (SELECT ss.opintosuoritusid FROM Op_suor_sisaltyvyys ss WHERE ss.db SET opes=( SELECT cast(round(sum( CASE WHEN s.es = 1 THEN s.laajuus ELSE 0 END,0 AS int FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id -- and s.opiskeluoikeus_id=t.opiskeluoikeus_id GROUP BY s.opiskelija_id WHERE opes IS NULL SET opek=( SELECT cast(round(sum( CASE WHEN s.ek = 1 THEN s.laajuus ELSE 0 END,0 AS int FROM #pisteet s WHERE s.opiskelija_id=t.opiskelija_id -- and s.opiskeluoikeus_id=t.opiskeluoikeus_id GROUP BY s.opiskelija_id

13 WHERE opek IS NULL set opes=0 WHERE opes IS NULL set opek=0 WHERE opek IS NULL -- opiskeluoikeusavain SET opiskeluoikeus_id = o.id, opiskeluoikeusavain = o.avain INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id WHERE 1=1 o.db lt.db oj.db -- tutkinto-tyyppinen ot.koodi IN ('2','4' kt.koodi IN ('1' --aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' SELECT AS oppilaitos,t.oppilaitostunnus,coalesce(t.hetu,'' "hetu", T.opiskelijaAvain, T.opiskeluoikeusAvain,@vuosi AS vuosi,coalesce(t.opes,0 "edellinen_lv_syys_pisteet" -- ( ,coalesce(T.opek,0 "edellinen_lv_kevat_pisteet" -- ( ,(T.opes + T.opek "Summa" -- opes + opek

14 DROP TABLE #tkopisk DROP TABLE #pisteet DROP TABLE #param

15 Alkuun 2. Perusjoukko Läsnäolot Lukuvuosi-ilmoittaumiset (läsnä/poissa/ei kirjoilla, 1/2/0. Poissa (2 sisältää sekä 2=Poissa, 3=Poissa ei kuluta opintoaikaa syys kevät syys 1.8.TILASTOVUOSI TILASTOVUOSI-1 (edellinen_syys_olo 1.1.TILASTOVUOSI TILASTOVUOSI(kevat_olo 1.8.TILASTOVUOSI TILASTOVUOSI(syys_olo Opiskelijoille joilla on ollut aikajaksolla aktiivinen opiskeluoikeus ja jolta löytyy läsnolotietoja. Taulu johon kerätään läsnäolot syys, kevät ja edellinen syys tilastovuosittain per opiskelija Lasnaolo55 Expand CREATE TABLE [Lasnaolo55]( source [oppilaitos] [varchar](20 NOT NULL, [oppilaitostunnus] [varchar](10 NOT NULL, [hetu] [varchar](11 NOT NULL, [opiskelijaavain] [varchar](100 NOT NULL, [opiskeluoikeusavain] [varchar](100 NULL, [vuosi] [int] NOT NULL, [syys_olo] [smallint] NULL CONSTRAINT [DF_Lasnaolo55_syys_olo] DEFAULT ((0, [kevat_olo] [smallint] NULL CONSTRAINT [DF_LasnaOlo55_kevat_olo] DEFAULT ((0, [edellinen_syys_olo] [smallint] NULL CONSTRAINT [DF_Lasnaolo55_edellinen_syys_olo] DEFAULT ((0, [uusi_opisk_kevat] [smallint] NULL CONSTRAINT [DF_Lasnaolo55_uusi_opisk_kevat] DEFAULT ((0, [uusi_opisk] [smallint] NULL CONSTRAINT [DF_Lasnaolo55_uusi_opisk] DEFAULT ((0, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_Lasnaolo55_reg_datum] DEFAULT (getdate( Alkuun Läsnäolotiedot per tilastovuosi per korkeakoulu AMK Läsnäolot AMK varchar(4 varchar(20 Expand source IF OBJECT_ID('tempdb..#param' IS NOT NULL

16 BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Yliopisto INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #tkopisk ( oppilaitostunnus varchar(6, hetu varchar(11, -- Henkilötunnus opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, olotamm smallint, -- Ilmoittautunut keväällä olosyys smallint, -- Ilmoittautunut syksyllä edellinen_syysolo smallint -- Edellinen syysolotilanne TRUNCATE TABLE #tkopisk CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelijaavain ON #tkopisk (opiskelijaavain CREATE NONCLUSTERED INDEX IX_tkopisk_opiskeluoikeus_id ON #tkopisk (opiskeluoikeus_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskeluoikeusavain ON #tkopisk (opiskeluoikeusavain INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeus_id,opiskeluoi keusavain SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param

17 , hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id, opiskeluoikeus_id = oo.id, opiskeluoikeusavain = oo.avain FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid = oo.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id = lt.op_oikeuden_tilaid WHERE 1 = 1 h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' oo.id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int as varchar+'-12-31' -- Viimeinen tilaisuus tulla mukaan perusjoukkoon INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeus_id,opiskeluoi keusavain SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id, opiskeluoikeus_id = oo.id, opiskeluoikeusavain = oo.avain FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid

18 WHERE 1=1 oo.id NOT IN (SELECT opiskeluoikeus_id AS ID FROM #tkopisk -- Ei edellisessä h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen -- cast(cast(@vuosi as int AS varchar + '-01-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' -- jolla on läsnäoloja oo.id IN ( SELECT OpiskeluoikeusID AS ID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-01-01' cast(@vuosi AS varchar +'-12-31' -- Läsnäolotiedot -- olotamm :: kevään ilmo tilanne set T.olotamm = 1 WHERE T.opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1' -- läsnä l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar +'-01-01' cast(@vuosi AS varchar +'-07-31' and T.olotamm is null ;

19 set T.olotamm = 2 WHERE T.opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('2','3' -- poissa, poissa ei kuluta -- " " l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-01-01' cast(@vuosi AS varchar + '-07-31' and T.olotamm is null ; -- ei ilmoa keväällä, nollaksi set T.olotamm=0 WHERE T.olotamm is null ; -- olosyys set T.olosyys = 1 WHERE T.opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1' -- läsnä l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-08-01' cast(@vuosi AS varchar + '-12-31' and T.olosyys is null ; set T.olosyys = 2 WHERE T.opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('2','3' -- poissa, poissa ei kuluta

20 l.alkamispaivamaara BETWEEN AS varchar + '-08-01' cast(@vuosi AS varchar + '-12-31' and T.olosyys is null ; -- ei ilmoa syksyllä, nollaksi set T.olosyys=0 WHERE T.olosyys is null ; -- edellinen olosyys set T.edellinen_syysolo = 1 WHERE opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1' -- läsnä l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int-1 as varchar+'-12-31' and T.edellinen_syysolo is null ; set T.edellinen_syysolo = 2 WHERE opiskeluoikeus_id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('2','3' -- poissa, poissa ei kuluta l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int-1 as varchar+'-12-31' and T.edellinen_syysolo is null ; -- ei ilmoa syksyllä, nollaksi set T.edellinen_syysolo=0

21 WHERE T.edellinen_syysolo is null ; SELECT AS oppilaitos, T.oppilaitostunnus, COALESCE(T.hetu,'' "hetu", T.opiskelijaAvain, AS vuosi, COALESCE(T.olosyys,0 "syys_olo", COALESCE(T.olotamm,0 "kevat_olo", T.edellinen_syysolo "edellinen_syys_olo" WHERE (T.olotamm + T.olosyys + COALESCE(T.edellinen_syysolo,0 > 0 DROP TABLE #tkopisk DROP TABLE #param

22 YO Läsnäolot YO Expand source varchar(4 varchar(20 IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Yliopisto INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #tkopisk ( oppilaitostunnus varchar(6, hetu varchar(11, -- Henkilötunnus opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, olotamm smallint, -- Ilmoittautunut keväällä olosyys smallint, -- Ilmoittautunut syksyllä edellinen_syysolo smallint -- Edellinen syysolotilanne

23 CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelijaavain ON #tkopisk (opiskelijaavain INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id SELECT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id WHERE 1=1 h.db p.db -- tutkinto-oikeus p.id IN ( SELECT oo.opiskelijaid FROM Opiskeluoikeus oo INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 oo.db lt.db -- tutkinto-tyyppinen opiskeluoikeus ot.koodi IN ('2','4' kt.koodi IN ('1' -- aktiivinen p.id in ( -- ja jolla läsnäoloja SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt on lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1','2','3' l.db l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int AS varchar+'-12-31' p.id NOT IN (SELECT opiskelija_id FROM #tkopisk -- opiskeluoikeusavain SET opiskeluoikeus_id = o.id, opiskeluoikeusavain = o.avain INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id

24 INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id WHERE 1=1 o.db lt.db oj.db -- tutkinto-tyyppinen ot.koodi IN ('2','4' kt.koodi IN ('1' --aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' o.opiskelijaid in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt on lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1','2','3' l.db l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int AS varchar+'-12-31' -- Läsnäolotiedot SET olotamm = 1 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1' --läsnä l.db -- Esim l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar +'-01-01' cast(@vuosi AS varchar +'-07-31' olotamm is null set olotamm = 2 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi in ('2','3' --poissa, poissa ei kuluta l.db

25 -- Esim l.alkamispaivamaara BETWEEN AS varchar +'-01-01' AS varchar +'-07-31' and olotamm is null -- ei ilmoa keväällä, tyhjäksi set olotamm = 0 WHERE olotamm is null -- olosyys :: syksyn ilmo tilanne set olosyys= 1 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1' --läsnä l.db -- Esim l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-08-01' cast(@vuosi AS varchar + '-12-31' olosyys is null set olosyys = 2 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi in ('2','3' --poissa, poissa ei kuluta l.db -- Esim l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-08-01' cast(@vuosi AS varchar + '-12-31' olosyys is null -- edellinen olosyys set edellinen_syysolo = 1

26 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1' -- läsnä l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int-1 as varchar+'-12-31' and edellinen_syysolo is null set edellinen_syysolo = 2 WHERE opiskelija_id in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l inner join Lukukausi_ilm_tila lt on lt.id=l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('2','3' -- poissa, poissa ei kuluta l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int-1 as varchar+'-12-31' and edellinen_syysolo is null -- ei ilmoa syksyllä, nollaksi set edellinen_syysolo=0 WHERE edellinen_syysolo is null SELECT AS oppilaitos, T.oppilaitostunnus, COALESCE(T.hetu,'' "hetu", T.opiskelijaAvain, AS vuosi, COALESCE(T.olosyys,0 "syys_olo", COALESCE(T.olotamm,0 "kevat_olo", T.edellinen_syysolo "edellinen_syys_olo"

27 WHERE (T.olotamm + T.olosyys + COALESCE(T.edellinen_syysolo,0 > 0 DROP TABLE #tkopisk

28 DROP TABLE #param Alkuun 3. Perusjoukko Opiskeluoikeudet Ajanjaksoille syys kevät 1.8.TILASTOVUOSI TILASTOVUOSI TILASTOVUOSI TILASTOVUOSI Poimintaan opiskeluoikeuden alkamis päivämäärä ja opiskelujen aloituspäivä ensimmäisen läsnäolotiedon mukaan. Lisäksi opiskeluoikeusjaksosta Tilastokeskuksen 6-numeroinen tutkinto koodi. Taulu johon kerätään opiskeluoikeudet tilastovuosittain per opiskelija: Opiskeluoikeus55 Expand CREATE TABLE [Opiskeluoikeus55]( source [oppilaitos] [varchar](20 NOT NULL, [oppilaitostunnus] [varchar](10 NOT NULL, [hetu] [varchar](11 NOT NULL, [opiskelijaavain] [varchar](100 NOT NULL, [opiskeluoikeusavain] [varchar](100 NULL, [vuosi] [int] NOT NULL, [tila] [smallint] NULL, [lo_aloituspvm] [date] NULL, [oo_aloituspvm] [date] NULL, [Tkkoodi] [varchar](10 NULL, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_Opiskeluoikeus55_reg_datum] DEFAULT (getdate( Opiskeluoikeudet AMK varchar(4 varchar(20 Expand source IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END

29 CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Oppilaitos TRUNCATE TABLE #param INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #Aloittanut ( oid int, minalkamispaivamaara date, LAlkamispaivamaara date, OAlkamispaivamaara date, opiskelija_id int not null CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date CREATE TABLE #tkopisk ( oppilaitostunnus varchar(6, hetu varchar(11, opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, tila smallint, lo_aloituspvm date, oo_aloituspvm date, Tkkoodi varchar(10 CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskeluoikeus_id ON #tkopisk (opiskeluoikeus_id

30 INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeus_id,opiskeluoi keusavain, oo_aloituspvm SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id, opiskeluoikeus_id = oo.id, opiskeluoikeusavain = oo.avain, oo_aloituspvm = oo.alkamispaivamaara FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid = oo.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id = lt.op_oikeuden_tilaid WHERE 1 = 1 h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' -- jolla on läsnäoloja oo.id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int as varchar+'-12-31' -- Viimeinen tilaisuus tulla mukaan perusjoukkoon INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id,opiskeluoikeus_id,opiskeluoi keusavain, oo_aloituspvm SELECT DISTINCT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id, opiskeluoikeus_id = oo.id, opiskeluoikeusavain = oo.avain

31 , oo_aloituspvm = oo.alkamispaivamaara FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id INNER JOIN Opiskeluoikeus oo ON oo.opiskelijaid = p.id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 oo.id NOT IN (SELECT opiskeluoikeus_id FROM #tkopisk -- Ei edellisessä h.db p.db oo.db lt.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen -- cast(cast(@vuosi as int AS varchar + '-01-01' BETWEEN lt.alkamispaivamaara coalesce(lt.paattymispaivamaara,' ' -- jolla on läsnäoloja oo.id IN ( SELECT OpiskeluoikeusID AS ID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-01-01' cast(@vuosi AS varchar +'-12-31' -- opiskeluoikeusavain SET tila = 1, oo_aloituspvm = oj.alkamispaivamaara, Tkkoodi = tn.koodi INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id INNER JOIN Tutkintonimike tn on tn.id = oj.tutkintonimikeid WHERE 1 = 1 o.db

32 lt.db oj.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' -- jolla on läsnäoloja o.id IN ( SELECT OpiskeluoikeusID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int as varchar+'-12-31' -- opiskeluoikeusavain SET tila = 1, oo_aloituspvm = oj.alkamispaivamaara, Tkkoodi = tn.koodi INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id INNER JOIN Tutkintonimike tn on tn.id = oj.tutkintonimikeid WHERE 1=1 o.db lt.db oj.db ot.koodi IN ('1' -- tutkinto-oikeus kt.koodi IN ('1' -- aktiivinen -- cast(cast(@vuosi as int AS varchar + '-01-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' -- jolla on läsnäoloja o.id IN ( SELECT OpiskeluoikeusID AS ID

33 FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt ON lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE l.db lt.koodi IN ('1','2','3' l.alkamispaivamaara BETWEEN cast(@vuosi AS varchar + '-01-01' cast(@vuosi AS varchar +'-12-31' TRUNCATE TABLE #Aloittanut INSERT INTO #Aloittanut (oid, minalkamispaivamaara, LAlkamispaivamaara, OAlkamispaivamaara,opiskelija_id SELECT oo.id, CASE WHEN MIN(L.Alkamispaivamaara >= OO.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara ELSE OO.Alkamispaivamaara END AS minalkamispaivamaara,l.alkamispaivamaara AS LAlkamispaivamaara,oo.Alkamispaivamaara AS OAlkamispaivamaara, o.id FROM dbo.henkilo H JOIN dbo.opiskelija O ON O.HenkiloID = H.ID JOIN dbo.opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.opiskeluoikeuden_tyyppi ot on ot.id=oo.op_oikeuden_tyyppiid JOIN dbo.lukukausi_ilmoittautuminen L ON L.OpiskeluoikeusID = OO.ID JOIN dbo.lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID WHERE OO.id IN (SELECT opiskeluoikeus_id FROM #tkopisk h.db o.db oo.db L.db LT.Koodi IN ('1' ot.koodi IN ('1' GROUP BY L.Alkamispaivamaara, oo.alkamispaivamaara, oo.id, o.id TRUNCATE TABLE #Min_aloituspvm INSERT INTO #Min_aloituspvm (oid, alk_pvm SELECT oid, MIN(minAlkamispaivamaara As alk_pvm FROM #Aloittanut GROUP BY oid CREATE TABLE #Min_aloituspvm_siirto ( oid int, alk_pvm date

34 INSERT INTO #Min_aloituspvm_siirto (oid, alk_pvm SELECT MA.oid, CASE WHEN MA.alk_pvm >= OO.Siirtopaivamaara THEN OO.Siirtopaivamaara ELSE MA.alk_pvm END AS alk_pvm FROM #Min_aloituspvm MA JOIN dbo.opiskeluoikeus OO ON MA.oid = OO.id oo.db WHERE OO.Alkamispaivamaara <= cast(@vuosi AS varchar + '-12-31' UPDATE #Min_aloituspvm SET alk_pvm = MT.alk_pvm FROM #Min_aloituspvm_siirto MT WHERE #Min_aloituspvm.oid = MT.oid SET lo_aloituspvm = M.alk_pvm join Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id join #Min_aloituspvm M ON M.oid = o.id WHERE o.db set T.lo_aloituspvm = T.oo_aloituspvm WHERE T.oo_aloituspvm > T.lo_aloituspvm SELECT AS oppilaitos, T.oppilaitostunnus, COALESCE(T.hetu,'' "hetu", T.opiskelijaAvain, AS vuosi, T.tila, T.lo_aloituspvm, T.oo_aloituspvm, T.Tkkoodi --WHERE T.tila IS NOT NULL DROP TABLE #tkopisk DROP TABLE #param DROP TABLE #Aloittanut DROP TABLE #Min_aloituspvm

35 DROP TABLE #Min_aloituspvm_siirto Opiskeluoikeudet YO varchar(4 varchar(20 Expand source IF OBJECT_ID('tempdb..#param' IS NOT NULL BEGIN TRUNCATE TABLE #param DROP TABLE #param END IF OBJECT_ID('tempdb..#tkopisk' IS NOT NULL BEGIN TRUNCATE TABLE #tkopisk DROP TABLE #tkopisk END CREATE TABLE #param ( vuosi varchar(4, org varchar(30,--kk-lyhenne kk varchar(6 --Yliopisto INSERT INTO #param (vuosi,org,kk as vuosi,@db as org,(select OrganisaatioKoodi FROM Yhteiset.Asetukset.Instanssit WHERE DB as kk CREATE TABLE #Aloittanut ( oid int, minalkamispaivamaara date, LAlkamispaivamaara date, OAlkamispaivamaara date, opiskelija_id int not null CREATE TABLE #Min_aloituspvm ( oid int, alk_pvm date CREATE TABLE #tkopisk (

36 oppilaitostunnus varchar(6, hetu varchar(11, -- Henkilötunnus opiskelijaavain varchar(100, opiskeluoikeusavain varchar(100, opiskelija_id int, opiskeluoikeus_id int, tila smallint, lo_aloituspvm date, oo_aloituspvm date, Tkkoodi varchar(10 CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelija_id ON #tkopisk (opiskelija_id CREATE NONCLUSTERED INDEX IX_tkopisk_opiskelijaavain ON #tkopisk (opiskelijaavain INSERT into #tkopisk (oppilaitostunnus,hetu,opiskelijaavain,opiskelija_id SELECT oppilaitostunnus = (SELECT TOP 1 kk FROM #param, hetu = h.henkilotunnus, opiskelijaavain = p.avain, opiskelija_id = p.id FROM Henkilo h INNER JOIN dbo.opiskelija p ON p.henkiloid = h.id WHERE 1=1 h.db p.db -- tutkinto-oikeus p.id IN ( SELECT oo.opiskelijaid FROM Opiskeluoikeus oo INNER JOIN Opiskeluoikeuden_tyyppi ot on ot.id = oo.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt on lt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt on kt.id=lt.op_oikeuden_tilaid WHERE 1=1 oo.db lt.db -- tutkinto-tyyppinen opiskeluoikeus ot.koodi IN ('2','4' kt.koodi IN ('1' -- aktiivinen p.id in ( -- ja jolla läsnäoloja SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt on lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1','2','3'

37 l.db l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int AS varchar+'-12-31' p.id NOT IN (SELECT opiskelija_id FROM #tkopisk -- opiskeluoikeusavain SET opiskeluoikeus_id = o.id, opiskeluoikeusavain = o.avain, tila = 1, oo_aloituspvm = oj.alkamispaivamaara, Tkkoodi = tn.koodi INNER JOIN Opiskeluoikeus o ON o.opiskelijaid=t.opiskelija_id INNER JOIN Opiskeluoikeuden_tyyppi ot ON ot.id=o.op_oikeuden_tyyppiid INNER JOIN Op_oikeuteen_liittyva_tila lt ON lt.opiskeluoikeusid=o.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=lt.op_oikeuden_tilaid INNER JOIN Opiskeluoikeusjakso oj on oj.opiskeluoikeusid = O.id INNER JOIN Tutkintonimike tn on tn.id = oj.tutkintonimikeid WHERE 1=1 o.db lt.db oj.db -- tutkinto-tyyppinen ot.koodi IN ('2','4' kt.koodi IN ('1' --aktiivinen cast(cast(@vuosi as int-1 AS varchar + '-08-01' BETWEEN oj.alkamispaivamaara coalesce(oj.paattymispaivamaara,' ' o.opiskelijaid in ( SELECT OpiskelijaID FROM Lukukausi_ilmoittautuminen l INNER JOIN Lukukausi_ilm_tila lt on lt.id = l.lukukausi_ilmoittautumisen_tilaid WHERE lt.koodi IN ('1','2','3' l.db l.alkamispaivamaara BETWEEN cast(cast(@vuosi as int-1 as varchar+'-08-01' cast(cast(@vuosi as int AS varchar+'-12-31' TRUNCATE TABLE #Aloittanut INSERT INTO #Aloittanut (oid, minalkamispaivamaara, LAlkamispaivamaara, OAlkamispaivamaara,opiskelija_id SELECT oo.id, CASE WHEN MIN(L.Alkamispaivamaara >= OO.Alkamispaivamaara THEN MIN(L.Alkamispaivamaara ELSE OO.Alkamispaivamaara

38 END AS minalkamispaivamaara,l.alkamispaivamaara AS LAlkamispaivamaara,oo.Alkamispaivamaara AS OAlkamispaivamaara,o.id FROM dbo.henkilo H JOIN dbo.opiskelija O ON O.HenkiloID = H.ID JOIN dbo.opiskeluoikeus OO ON OO.OpiskelijaID = O.ID JOIN dbo.opiskeluoikeuden_tyyppi ot on ot.id=oo.op_oikeuden_tyyppiid LEFT JOIN Lukukausi_ilmoittautuminen L ON L.OpiskelijaID = O.ID JOIN dbo.lukukausi_ilm_tila LT ON LT.ID = L.Lukukausi_ilmoittautumisen_tilaID INNER JOIN Op_oikeuteen_liittyva_tila olt ON olt.opiskeluoikeusid=oo.id INNER JOIN Opiskeluoikeuden_tila kt ON kt.id=olt.op_oikeuden_tilaid WHERE O.id IN (SELECT opiskelija_id FROM #tkopisk h.db o.db oo.db L.db olt.db ot.koodi IN ('2','4' kt.koodi = '1' --aktiivinen LT.Koodi = '1' /* Läsnä */ GROUP BY L.Alkamispaivamaara, oo.alkamispaivamaara, oo.id, o.id INSERT INTO #Min_aloituspvm (oid, alk_pvm SELECT oid, MIN(minAlkamispaivamaara As alk_pvm FROM #Aloittanut GROUP BY oid SET lo_aloituspvm = M.alk_pvm INNER JOIN Opiskeluoikeus o on o.opiskelijaid=t.opiskelija_id INNER JOIN #Min_aloituspvm M ON o.id=m.oid WHERE 1=1 o.db set T.lo_aloituspvm = T.oo_aloituspvm WHERE T.oo_aloituspvm > T.lo_aloituspvm SELECT AS oppilaitos, T.oppilaitostunnus, COALESCE(T.hetu,'' "hetu", T.opiskelijaAvain, AS vuosi

39 , T.tila, T.lo_aloituspvm, T.oo_aloituspvm, T.Tkkoodi DROP TABLE #tkopisk DROP TABLE #param DROP TABLE #Aloittanut

40 DROP TABLE #Min_aloituspvm Alkuun 4. Perusjoukko Pankki (tulos ylläolevien tiedostoista johdettu Kumulatiivinen pankki opintopistekertymä jos on kertyny yli 55 op tai 27 op keväällä aloittaneet. Saldot ja suoritusstatukset "suorittanut 55 ilman pankkia", "suorittanut pankin avulla", "suorittanut 27". Taulu johon kerätään pankkilaskelmat tilastovuosittain per opiskelija: Pankki55 Expand CREATE TABLE [Pankki55]( source [oppilaitos] [varchar](20 NOT NULL, [oppilaitostunnus] [varchar](10 NOT NULL, [hetu] [varchar](11 NOT NULL, [opiskelijaavain] [varchar](100 NOT NULL, [opiskeluoikeusavain] [varchar](100 NULL, [vuosi] [int] NOT NULL, [uutta_pankkiin] [int] NULL CONSTRAINT [DF_Pankki55_uutta_pankkiin] DEFAULT ((0, [pankki_kumu_ennen_55] [int] NULL CONSTRAINT [DF_Pankki55_pankki_kumu_ennen_55] DEFAULT ((0, [op_summa_kun_ote_pankista] [int] NULL CONSTRAINT [DF_Pankki55_op_summa_kun_ote_pankista] DEFAULT ((0, [pankki_saldo_55] [int] NULL CONSTRAINT [DF_Pankki55_pankki_saldo_55] DEFAULT ((0, [suorittanut_27] [smallint] NULL CONSTRAINT [DF_Pankki55_suorittanut_27] DEFAULT ((0, [suorittanut_55_ilman_pankkia] [smallint] NULL CONSTRAINT [DF_Pankki55_suorittanut_55_ilman_pankkia] DEFAULT ((0, [suorittanut_55_pankin_avulla] [smallint] NULL CONSTRAINT [DF_Pankki55_suorittanut_55_pankin_avulla] DEFAULT ((0, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_Pankki55_reg_datum] DEFAULT (getdate( Pankki AMK varchar(4 varchar(20 Expand source DELETE FROM [Pankki55] WHERE oppilaitos vuosi

41 INSERT INTO [Pankki55] ([oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[opiskeluoikeusavain],[ vuosi], uutta_pankkiin SELECT DISTINCT [oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[opiskeluoikeusavain],[v uosi], CASE WHEN summa >= 55 THEN summa -55 ELSE 0 END AS uutta_pankkiin FROM [Pisteet55] WHERE oppilaitos vuosi UPDATE P SET P.uutta_pankkiin = (P2.summa - 27, P.suorittanut_27 = 1, P.pankki_saldo_55 = (P2.summa - 27 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain P.opiskeluoikeusAvain = P2.opiskeluoikeusAvain JOIN Lasnaolo55 L ON L.oppilaitostunnus = P.oppilaitostunnus L.opiskelijaAvain = P.opiskelijaAvain L.opiskeluoikeusAvain = P.opiskeluoikeusAvain WHERE P.oppilaitos P.vuosi P2.vuosi L.vuosi L.uusi_opisk_kevat = 1 P2.summa >= 27 UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain P.opiskeluoikeusAvain = PUU.opiskeluoikeusAvain JOIN Lasnaolo55 L ON L.oppilaitostunnus = P.oppilaitostunnus L.opiskelijaAvain = P.opiskelijaAvain L.opiskeluoikeusAvain = P.opiskeluoikeusAvain WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1 L.vuosi L.uusi_opisk_kevat = 1 UPDATE P SET P.pankki_kumu_ennen_55 = ( ( SELECT TOP 1 COALESCE(VV.uutta_pankkiin,0 FROM Pankki55 VV WHERE VV.vuosi = P2.vuosi VV.oppilaitos = P2.oppilaitos VV.opiskelijaAvain = P2.opiskelijaAvain VV.opiskeluoikeusAvain = P2.opiskeluoikeusAvain + ( SELECT TOP 1 COALESCE(VV2.pankki_kumu_ennen_55,0 FROM Pankki55 VV2 WHERE VV2.vuosi = P2.vuosi VV2.oppilaitos = P2.oppilaitos VV2.opiskelijaAvain = P2.opiskelijaAvain VV2.opiskeluoikeusAvain = P2.opiskeluoikeusAvain FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain P.opiskeluoikeusAvain = P2.opiskeluoikeusAvain

42 WHERE P.oppilaitos P.vuosi P2.vuosi = cast(cast(@vuosi as int-1 as varchar UPDATE P SET P.pankki_saldo_55 = (P.pankki_kumu_ennen_55 - (55 - (P2.summa, P.op_summa_kun_ote_pankista = COALESCE(P2.summa,0 + (55 - (COALESCE(P2.summa,0, P.suorittanut_55_pankin_avulla = 1, P.suorittanut_55_ilman_pankkia = 0 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain P.opiskeluoikeusAvain = P2.opiskeluoikeusAvain WHERE P.oppilaitos P.vuosi P2.vuosi P2.summa < 55 P2.summa > 0 P.pankki_kumu_ennen_55 >= (55 - (P2.summa UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain P.opiskeluoikeusAvain = PUU.opiskeluoikeusAvain WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1 UPDATE P SET P.suorittanut_55_ilman_pankkia = 1, P.suorittanut_55_pankin_avulla = 0, P.pankki_saldo_55 = P.uutta_pankkiin + P.pankki_kumu_ennen_55 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain P.opiskeluoikeusAvain = P2.opiskeluoikeusAvain WHERE P.oppilaitos P.vuosi P2.vuosi P2.summa >= 55 UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain P.opiskeluoikeusAvain = PUU.opiskeluoikeusAvain

43 WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1 Pankki YO varchar(4 varchar(20 Expand source DELETE FROM [Pankki55] WHERE oppilaitos vuosi INSERT INTO [Pankki55] ([oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[opiskeluoikeusavain],[ vuosi], uutta_pankkiin SELECT DISTINCT [oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[opiskeluoikeusavain],[v uosi], CASE WHEN summa >= 55 THEN summa -55 ELSE 0 END AS uutta_pankkiin FROM [Pisteet55] WHERE oppilaitos vuosi UPDATE P SET P.uutta_pankkiin = (P2.summa - 27, P.suorittanut_27 = 1, P.pankki_saldo_55 = (P2.summa - 27 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain JOIN Lasnaolo55 L ON L.oppilaitostunnus = P.oppilaitostunnus L.opiskelijaAvain = P.opiskelijaAvain WHERE P.oppilaitos P.vuosi P2.vuosi L.vuosi L.uusi_opisk_kevat = 1 P2.summa >= 27 UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain JOIN Lasnaolo55 L ON L.oppilaitostunnus = P.oppilaitostunnus L.opiskelijaAvain = P.opiskelijaAvain WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1 L.vuosi L.uusi_opisk_kevat = 1 UPDATE P SET P.pankki_kumu_ennen_55 = ( ( SELECT TOP 1 COALESCE(VV.uutta_pankkiin,0 FROM Pankki55 VV WHERE VV.vuosi = P2.vuosi VV.oppilaitos = P2.oppilaitos VV.opiskelijaAvain = P2.opiskelijaAvain + ( SELECT TOP 1 COALESCE(VV2.pankki_kumu_ennen_55,0 FROM Pankki55 VV2 WHERE VV2.vuosi = P2.vuosi VV2.oppilaitos = P2.oppilaitos

44 VV2.opiskelijaAvain = P2.opiskelijaAvain FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain WHERE P.oppilaitos P.vuosi P2.vuosi = cast(cast(@vuosi as int-1 as varchar UPDATE P SET P.pankki_saldo_55 = (P.pankki_kumu_ennen_55 - (55 - (P2.summa, P.op_summa_kun_ote_pankista = COALESCE(P2.summa,0 + (55 - (COALESCE(P2.summa,0, P.suorittanut_55_pankin_avulla = 1, P.suorittanut_55_ilman_pankkia = 0 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain WHERE P.oppilaitos P.vuosi P2.vuosi P2.summa < 55 P2.summa > 0 P.pankki_kumu_ennen_55 >= (55 - (P2.summa UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1 UPDATE P SET P.suorittanut_55_ilman_pankkia = 1, P.suorittanut_55_pankin_avulla = 0, P.pankki_saldo_55 = P.uutta_pankkiin + P.pankki_kumu_ennen_55 FROM Pankki55 P JOIN Pisteet55 P2 ON P2.oppilaitostunnus = P.oppilaitostunnus P2.opiskelijaAvain = P.opiskelijaAvain WHERE P.oppilaitos P.vuosi P2.vuosi P2.summa >= 55 UPDATE PUU SET PUU.pankki_kumu_ennen_55 = P.pankki_saldo_55 FROM Pankki55 PUU JOIN Pankki55 P ON P.oppilaitostunnus = PUU.oppilaitostunnus P.opiskelijaAvain = PUU.opiskelijaAvain WHERE PUU.oppilaitos P.vuosi PUU.vuosi = cast(@vuosi AS int+1

45

46 Alkuun 5. Perusjoukko Opiskelijat Opiskelija55 Expand CREATE TABLE [Opiskelija55]( source [oppilaitos] [varchar](20 NOT NULL, [oppilaitostunnus] [varchar](10 NOT NULL, [hetu] [varchar](11 NOT NULL, [opiskelijaavain] [varchar](100 NOT NULL, [Sukupuoli] [smallint] NULL, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_Opiskelija55_reg_datum] DEFAULT (getdate(, CONSTRAINT [PK_Opiskelija55] PRIMARY KEY CLUSTERED ( [oppilaitostunnus] ASC, [hetu] ASC, [opiskelijaavain] ASC WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ON [PRIMARY] Kerätään yhteen ylläoleviin poimitut. Lisätiedoksi vielä opiskelijan sukupuoli. Opiskelijat AMK DELETE FROM [Opiskelija55] WHERE oppilaitos INSERT INTO [Opiskelija55] ([oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[sukupuoli] Expand source SELECT DISTINCT [oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain], S.Koodi AS sukupuoli FROM Lasnaolo55 L JOIN Opiskelija O ON O.Avain = L.opiskelijaAvain JOIN Henkilo H ON O.henkiloid = H.id JOIN Sukupuoli S ON H.SukupuoliID = S.id WHERE L.oppilaitos O.db H.db O.Avain NOT IN (SELECT OO.opiskelijaAvain FROM Opiskelija55 OO WHERE OO.oppilaitos

47 Opiskelijat YO DELETE FROM [Opiskelija55] WHERE oppilaitos INSERT INTO [Opiskelija55] ([oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain],[sukupuoli] Expand source SELECT DISTINCT [oppilaitos],[oppilaitostunnus],[hetu],[opiskelijaavain], S.Koodi AS sukupuoli FROM Lasnaolo55 L JOIN Opiskelija O ON O.Avain = L.opiskelijaAvain JOIN Henkilo H ON O.henkiloid = H.id JOIN Sukupuoli S ON H.SukupuoliID = S.id WHERE L.oppilaitos O.db H.db O.Avain NOT IN (SELECT OO.opiskelijaAvain FROM Opiskelija55 OO WHERE OO.oppilaitos Alkuun Esimerkkidataa per perusjoukko (taulu ja pankkilaskelma opiskelijan aikajanana Pisteet55 opiskelijaavain opiskeluoikeusavain vuosi edellinen_lv_syys_pisteet edellinen_lv_kevat_pisteet summa Keltainen väri: Opiskelija ensimmäisenä keväänä (2012 suorittanut 30 op, josta 3 op yli 27 op kertyy pankkiin seuraavalle vuodelle (2013. Seuraavalle vuodelle (2013 kumulativinen pankkisaldo 3. Sininen väri: Seuraavana vuonna (2013 edellisen lukuvuoden ( opintopisteet 67 op, eli opiskelija on suorittanut >= 55 op, kertyy 12 op uusia pisteitä pankkiin. Ei tarvita pankkia. Suorittanut_55_ilman_pankkia = 1. Kumulativisena saldona seuraavalle vuodelle (2014 on nyt 15. Vihreä väri: Seuraavana vuonna (2014 ( suorittanut 58 op. Ei tarvita vieläkään pankkia. Suorittanut_55_ilman_pankkia =1. Tulee 3 op uutta pistettä pankkin. Kumulatiivinen saldo seuraavalle (2015 on 18 op. Punainen väri: Seuraavana (2015 edelliseltä ( kertynyt nyt vain 48 op, eli on alle 55 op ja nyt otetaan pankista jotta saadaan 55 op ja saldoksi jää 11. Suorittanut_55_pankin_avulla = 1 Alkuun Pankki55 opiskelijaavain opiskeluoikeusavain vuosi uutta_pankkiin pankki_kumu_ennen_55 op_summa_kun_ote_pankista pankki_saldo_55 suorittanut_

48 Opiskeluoikeus55 opiskelijaavain opiskeluoikeusavain vuosi tila lo_aloituspvm oo_aloituspvm Tkkoodi Lasnaolo55 opiskelijaavain opiskeluoikeusavain vuosi syys_olo kevat_olo edellinen_syys_olo uusi_opisk_kevat uusi_opisk Alkuun Lyhyt kuvaus laskentaprosessista Lasketaan pisteet Haetaan läsnäolotiedot Haetaan opiskeluoikeustiedot Poimitaan keväällä aloittaneet Poimitaan kaikki tilastovuoden uudet opiskelijat Alustetaan pankkitiedot Lasketaan kevällä aloittaneiden >= 27 op keränneet Lasketaan kumulatiivinen pankkitili Pankkisaldot kumulatiivisen laskennan jälkeen Kerätään yhteen opiskelijat Loppuraportti ylläolevasta kerätystä per tilastovuosi Lopputulos Kerätään yhteen tiedot per tilastovuosi ja viedään extra-vipuseen tiedot. Taulu jonne tulokset kerätään

49 ViisViisTulosTaulu CREATE TABLE [ViisViisLaskentaTaulukko]( [oppilaitos] [varchar](20 NULL, [oppilaitostunnus] [varchar](10 NULL, [vuosi] [int] NULL, [hetu] [varchar](11 NULL, [olok] [smallint] NULL, [olos] [smallint] NULL, [syys] [int] NULL, [kevat] [int] NULL, [summa] [int] NULL, [tkoodi] [varchar](6 NULL, [lo_aloituspvm] [date] NULL, [oo_aloituspvm] [date] NULL, [opiskeluoikeus_id] [int] NULL, [uutta_pankkiin] [int] NULL, [pankki_kumu_ennen_55] [int] NULL, [op_summa_kun_ote_pankista] [int] NULL, [pankki_saldo_55] [int] NULL, [suorittanut_27] [smallint] NULL, [suorittanut_55_ilman_pankkia] [smallint] NULL, [suorittanut_55_pankin_avulla] [smallint] NULL, [uusi_opisk_kevat] [smallint] NULL, [uusi_opisk] [smallint] NULL, [opiskelijaavain] [varchar](100 NULL, [opiskeluoikeusavain] [varchar](100 NULL, [sukupuoli] [smallint] NULL, [edellinen_syysolo] [smallint] NULL, [reg_datum] [smalldatetime] NULL CONSTRAINT [DF_ViisViisLaskentaTaulukko_reg_datum] DEFAULT (getdate( Expand source Poimitaan tiedot korkeakouluittain AMK: AMK Lopputulos DELETE FROM ViisViisLaskentaTaulukko WHERE oppilaitos INSERT INTO [dbo].[viisviislaskentataulukko] ([oppilaitos],[oppilaitostunnus],[vuosi],[hetu],[olok],[olos],[syys],[kevat],[summa],[tkoodi],[lo_aloituspvm],[oo_aloituspvm] Expand source

50 ,[uutta_pankkiin],[pankki_kumu_ennen_55],[op_summa_kun_ote_pankista],[pankki_saldo_55],[suorittanut_27],[suorittanut_55_ilman_pankkia],[suorittanut_55_pankin_avulla],[uusi_opisk_kevat],[uusi_opisk],[opiskelijaavain],[opiskeluoikeusavain],[sukupuoli],[edellinen_syysolo] SELECT DISTINCT O.[oppilaitos], O.[oppilaitostunnus], OK.[vuosi], O.hetu, L.[kevat_olo], L.[syys_olo], P.[edellinen_lv_syys_pisteet], P.[edellinen_lv_kevat_pisteet], P.[summa], OK.[tkkoodi], OK.[lo_aloituspvm], OK.[oo_aloituspvm], PK.[uutta_pankkiin], PK.[pankki_kumu_ennen_55], PK.[op_summa_kun_ote_pankista], PK.[pankki_saldo_55], PK.[suorittanut_27], PK.[suorittanut_55_ilman_pankkia], PK.[suorittanut_55_pankin_avulla], L.[uusi_opisk_kevat], L.[uusi_opisk], O.[opiskelijaAvain], Ok.opiskeluoikeusAvain, O.[sukupuoli], L.[edellinen_syys_olo] FROM [Opiskelija55] O INNER JOIN Opiskeluoikeus55 OK ON OK.opiskelijaAvain = O.opiskelijaAvain OK.oppilaitostunnus = O.oppilaitostunnus LEFT JOIN Lasnaolo55 L ON L.vuosi = OK.vuosi L.oppilaitostunnus = OK.oppilaitostunnus L.opiskelijaAvain = OK.opiskelijaAvain L.opiskeluoikeusAvain = OK.opiskeluoikeusAvain LEFT JOIN Pisteet55 P ON P.vuosi = L.vuosi P.oppilaitostunnus = L.oppilaitostunnus

51 P.opiskelijaAvain = L.opiskelijaAvain P.opiskeluoikeusAvain = L.opiskeluoikeusAvain LEFT JOIN Pankki55 PK ON PK.vuosi = P.vuosi PK.oppilaitostunnus = P.oppilaitostunnus PK.opiskelijaAvain = P.opiskelijaAvain PK.opiskeluoikeusAvain = P.opiskeluoikeusAvain

52 WHERE O.oppilaitos OK.tila = 1 Alkuun YO: YO Lopputulos DELETE FROM ViisViisLaskentaTaulukko WHERE oppilaitos INSERT INTO [dbo].[viisviislaskentataulukko] ([oppilaitos],[oppilaitostunnus],[vuosi],[hetu],[olok],[olos],[syys],[kevat],[summa],[tkoodi],[lo_aloituspvm],[oo_aloituspvm],[uutta_pankkiin],[pankki_kumu_ennen_55],[op_summa_kun_ote_pankista],[pankki_saldo_55],[suorittanut_27],[suorittanut_55_ilman_pankkia],[suorittanut_55_pankin_avulla],[uusi_opisk_kevat],[uusi_opisk],[opiskelijaavain],[opiskeluoikeusavain],[sukupuoli],[edellinen_syysolo] SELECT DISTINCT O.[oppilaitos], O.[oppilaitostunnus], OK.[vuosi], O.hetu, L.[kevat_olo], L.[syys_olo], P.[edellinen_lv_syys_pisteet], P.[edellinen_lv_kevat_pisteet], P.[summa], OK.[tkkoodi], OK.[lo_aloituspvm], OK.[oo_aloituspvm], PK.[uutta_pankkiin], PK.[pankki_kumu_ennen_55], PK.[op_summa_kun_ote_pankista], PK.[pankki_saldo_55], PK.[suorittanut_27], PK.[suorittanut_55_ilman_pankkia] Expand source

53 , PK.[suorittanut_55_pankin_avulla], L.[uusi_opisk_kevat], L.[uusi_opisk], O.[opiskelijaAvain], Ok.opiskeluoikeusAvain, O.[sukupuoli], L.[edellinen_syys_olo] FROM [Opiskelija55] O INNER JOIN Opiskeluoikeus55 OK ON OK.opiskelijaAvain = O.opiskelijaAvain OK.oppilaitostunnus = O.oppilaitostunnus LEFT JOIN Lasnaolo55 L ON L.vuosi = OK.vuosi L.oppilaitostunnus = OK.oppilaitostunnus L.opiskelijaAvain = OK.opiskelijaAvain L.opiskeluoikeusAvain = OK.opiskeluoikeusAvain -- LEFT JOIN Pisteet55 P ON P.vuosi = L.vuosi P.oppilaitostunnus = L.oppilaitostunnus P.opiskelijaAvain = L.opiskelijaAvain P.opiskeluoikeusAvain = L.opiskeluoikeusAvain -- LEFT JOIN Pankki55 PK ON PK.vuosi = P.vuosi PK.oppilaitostunnus = P.oppilaitostunnus PK.opiskelijaAvain = P.opiskelijaAvain PK.opiskeluoikeusAvain = P.opiskeluoikeusAvain -- WHERE O.oppilaitos

54 OK.tila = 1 Alkuun Lopputulostiedoista muodostetaan korkeakoulukohtaiset tarkistustiedostot VirtaSFTP-palvelimelle. Tarkistustiedostot Tiedot/sarakkeet csv-tiedostossa: oppilaitos;oppilaitostunnus;vuosi;hetu;sukupuoli;edellinen_syysolo;olok;olos;syys;kevat;summa;uutta_pankkiin;pankki_kumu_ennen _55;op_summa_kun_ote_pankista;pankki_saldo_55;suorittanut_27;suorittanut_55_ilman_pankkia;suorittanut_55_pankin_avulla;uusi_ opisk_kevat;uusi_opisk;tkoodi;lo_aloituspvm;oo_aloituspvm;opiskelijaavain;opiskeluoikeusavain oppilaitos : Lyhenne, korkeakoulun tunniste Virrassa oppilaitostunnus : Organisaatiokoodi (5 numeroinen vuosi : Tilastovuosi hetu : Opiskelijan henkilötunnus tai syntymäaika sukupuoli : Opiskelijan sukupuoli (1=mies, 2=nainen edellinen_syysolo : Tilastovuodesta katsottuna edellisen syyslukukauden tieto 1=läsnä, 2=poissa, 0=ei kirjoilla/tieto puuttuu olok : kevätlukukauden tieto 1=läsnä, 2=poissa, 0=ei kirjoilla/tieto puuttuu olos : tilastovuoden syyslukukauden tieto 1=läsnä, 2=poissa, 0=ei kirjoilla/tieto puuttuu syys : edellisen syyslukukauden opintopisteet (kokonaisluku tilastovuosi-1 kevat : edellisen kevätlukukauden opintopisteet (kokonaisluku tilastovuosi summa : syys + kevat pisteet yhteensä 1.8.tilastovuosi tilastovuosi uutta_ pankkiin : tilastovuonna pankkiin seuraavalle vuodelle pankki_kumu_ennen_55 : pankin kumulatiivinen kertymä ennen 55 laskentaa tilastovuonna op_summa_kun_ote_pankista : opintopistesumma kun on käytetty pankkia pankki_saldo_55 : pankkisaldo suorittanut_27 : Suorittanut >= 27 op suorittanut_55_ilman_pankkia : Suorittanut >= 55 op ilman pankkia suorittanut_55_pankin_avulla : Suorittanut 55 op pankin avulla uusi_opisk_kevat : Keväällä aloittanut uusi opiskelija uusi_opisk : Vuoden uusi opiskelija tkoodi : Tilastokeskuksen 6-numeroinen koulutuskoodi lo_aloituspvm : Ensimmäinen läsnäolopäivämäärä. Laskettu ensimmäisestä läsnäolotiedosta tarvitaan uusi_opisk -tietoa päätellessä oo_aloituspvm : Opiskeluoikeuden alkamispäivämäärä. Tilastovuoden edellisen lukuvuoden aktiivinen opiskeluoikeus opiskelijaavain : Opiskelijan yksilöivä avain opiskeluoikeusavain : Opiskeluoikeuden yksilöivä avain Alkuun csv-tiedostoja voi Excelissä esim. COUNTIF( tai SUMIF( funktioita käyttämällä tehdä tarkistuslaskelmia, opiskelijakohtaisesti tarkistaa tietoja opiskelijaavain, opiskeluoikeusavaimien tai hetun mukaan.

55 Esimerkkitapauksia Esim1. Suorittanut 55 pankin avulla Opiskelijalla on suorittanut edellisellä lukuvuodella 50 op ja pankissa on 5 op. summa = 50 (edellisen lukuvuoden pisteet pankki_kumu_ennen_55 = 5 (pankkiin kertyneet op aiemilta vuosilta op_summa_kun_ote_pankista = 55 pankki_saldo_55 = 0 (saldo jäljellä kun käytetty pankkia => suorittanut_55_pankin_avulla = 1 Esim2. Pankki tyhjenee jos pisteet eivät riitä saavuttamaan 55 op summa = 35 (edellisen lukuvuoden pisteet pankki_kumu_ennen_55 = 5 (pankkiin kertyneet aiemilta vuosilta pankki_saldo_55 = 0 (saldo sen jälkeen kun käytetty pankkia => suorittanut_55_ilman_pankkia=0 => suorittanut_55_pankin_avulla=0 Esim3. Suorittanut 55 op ilman pankkia Opiskelijalle kertynyt yli 55 op. summa = 59 (edellisen lukuvuoden pisteet uutta_pankkiin = 4 pankki_kumu_ennen_55 = 5 (pankkiin kertyneet op aiemilta vuosilta pankki_saldo_55 = 9 (uutta_pankkiin + pankki_kumu_ennen_55 => suorittanut_55_ilman_pankkia = 1 Esim4. Keväällä aloittanut suorittanut 27 op summa = 30 (edellisen lukuvuoden pisteet, eli ainoastaan keväältä uutta_pankkiin = 3

56 pankki_saldo_55 = 3 => suorittanut_27 = 1 Alkuun Mittarit Extravipusen raportissa 1. Vähintään 55 opintopistettä suorittaneiden määrä (summa mittareista 3., 4. ja Vähintään 55 opintopistettä suorittaneiden määrä, rahoitusmalli (sama kuin 1., paitsi että keväällä aloittaneiden määrä jaettuna kahdella 3. Keväällä aloittaneista vähintään 27 op:ta suorittaneet 4. Suorittanut 55 op ilman pankkia 5. Suorittanut 55 op pankin kanssa 6. Läsnäolleiden määrä (läsnäolotieto 1 joko syksyllä tai keväällä (esim. s2014 tai k op suorittaneiden osuus (mittari 1. jaettuna mittarilla 6. Raportin muuttujat: a. lukuvuosi, esim 2014/2015 b. korkeakoulu c. tutkintokoodi ja siitä johdettuna OKM:n ohjauksen alat ja ISCED-luokitus d. sukupuoli e. aika aloittamisesta (tilastolukuvuosi miinus aloittamislukuvuosi, asteikko 0,1...6,7 ja 8 tai enemmän f. uutena keväällä aloittanut Alkuun

Opiskeluoikeuksien maaran tiedonkeruu

Opiskeluoikeuksien maaran tiedonkeruu Opiskeluoikeuksien maaran tiedonkeruu Määrittely Opinto-oikeuksista tarvitaan seuraavat tiedot: Tieto jokaisesta yksittäisestä opinto-oikeudesta ja kytkentä niistä opinto-oikeuksista jotka ovat samalla

Lisätiedot

Opintojen edistymisen seurannan aikataulu, syksy 2016 ja kevät 2017

Opintojen edistymisen seurannan aikataulu, syksy 2016 ja kevät 2017 Kela Opiskelijatiedot (kuukausitiedot Edistymisenseuranta Opintojen edistymisen seurannan aikataulu, syksy 2016 ja kevät 2017 Tärkeät päivämäärät Ennakkopyyntötiedosto toimitettu CSC:lle 16.8.2016. Tarkistusajot

Lisätiedot

Virta_Latausraportti - Tarkistukset

Virta_Latausraportti - Tarkistukset Virta_Latausraportti - Tarkistukset Tällä sivulla ylläpidetään tietovarannossa tehtävien tarkistusten listaa. Tarkistusten tulos ilmenee siis Virta_Latausraportilla PUUTTEITA-listalla. Opiskelijat Opiskelijalla

Lisätiedot

Tilastokeskuksen opiskelijatiedonkeruu yliopistot

Tilastokeskuksen opiskelijatiedonkeruu yliopistot Tilastokeskuksen opiskelijatiedonkeruu yliopistot Ks. http://stat.fi/keruu/ylio/ "Yliopisto-opiskelijatiedonkeruu sisältää vain tutkintoon johtavan koulutuksen opiskelijat, jotka ovat ilmoittautuneet [päivämäärä]

Lisätiedot

Tilastokeskuksen opiskelijatiedonkeruu ammattikorkeakoulut

Tilastokeskuksen opiskelijatiedonkeruu ammattikorkeakoulut Tilastokeskuksen opiskelijatiedonkeruu ammattikorkeakoulut Poiminta Alustus Perusjoukon valinta Tietueet Oppilaitostunnus (tunn Koulutustyyppi (koultyp Erikoistumiskoulutus Koulutuksen opetuskieli (kiel

Lisätiedot

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut Ks. http://stat.fi/keruu/amkt/ "Tiedot ammattikorkeakouluissa kalenterivuoden [vuosi] aikana suoritetuista tutkinnoista, erikoistumisopinnoista

Lisätiedot

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut

Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut Tilastokeskuksen tutkintotiedonkeruu ammattikorkeakoulut Ks. http://stat.fi/keruu/amkt/ "Tiedot ammattikorkeakouluissa kalenterivuoden [vuosi] aikana suoritetuista tutkinnoista, erikoistumisopinnoista

Lisätiedot

Tilastokeskuksen tutkintotiedonkeruu yliopistot

Tilastokeskuksen tutkintotiedonkeruu yliopistot Tilastokeskuksen tutkintotiedonkeruu yliopistot Ks. http://stat.fi/keruu/ylit/ "Tiedonkeruu koskee kaikkia yliopistoissa vuonna [vuosi] suoritettuja tutkintoja." Poiminta Alustus Perusjoukon valinta Tietueet

Lisätiedot

Opintopistetiedonkeruu

Opintopistetiedonkeruu @ Opintopistetiedonkeruu Opintopistetiedonkeruu Mistä on kysymys Virran integroiminen Vipusen tietolähteeksi Suorat tiedonkeruut vuoden 2014 tietojen osalta alkaen alkuvuodesta 2015 Panokset kovenivat

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Nykyiset tiedonkeruut tietovarannosta

Nykyiset tiedonkeruut tietovarannosta @ Nykyiset tiedonkeruut tietovarannosta Nykyisten tiedonkeruiden toteuttaminen tietovarannosta: opiskelija- ja tutkintotiedonkeruu sekä opiskeluoikeustiedonkeruu KOTA-seminaari 18.9.2014 Lauri Jokipii,

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

SQL - STRUCTURED QUERY LANGUAGE

SQL - STRUCTURED QUERY LANGUAGE SQL Peruskomentoja SQL - STRUCTURED QUERY LANGUAGE SQL on tietokantojen käsittelyyn kehitetty kieli Esimerkkejä kielellä hoidettavistaa toiminnoista: Tietokannan rakenteen määrittely ja muuttaminen Kyselyt

Lisätiedot

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa Samanaikaisuuden hallinta Optiot transaktionaalisissa työnkuluissa Sisältö Transaktionaaliset työnkulut Samanaikaisuuden ongelmat Optiot idea käyttökohteet WorkMan Optioiden toteutus Arviointi Transaktionaaliset

Lisätiedot

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät HAAGA-HELIA Heti-09 1 (12) Näkymät Näkymät... 2 Eri tyyppisiä relaatioita... 2 Taulu - Tallennettu relaatio... 2 Tulosrelaatio - Kyselyn tulos... 2 Näkymä - Virtuaalirelaatio... 2 Näkymien määrittely...

Lisätiedot

KOTA-seminaari, Helsinki 2018 VIRTA-OTP Tiedonkeruut Tavoiteajassa tutkinnon suorittaneet

KOTA-seminaari, Helsinki 2018 VIRTA-OTP Tiedonkeruut Tavoiteajassa tutkinnon suorittaneet KOTA-seminaari, Helsinki 2018 VIRTA-OTP Tiedonkeruut Tavoiteajassa tutkinnon suorittaneet 29.8.2018, fredrik.finnberg@csc.fi CSC Suomalainen tutkimuksen, koulutuksen, kulttuurin ja julkishallinnon ICT-osaamiskeskus

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Näkymät... 2 Relaatiotyypit... 2 Taulu - Tallennettu relaatio... 3 Näkymä - Virtuaalirelaatio... 3 Tulosrelaatio - Kyselyn tulos... 3 Otetaulut - Tauluun tallennettu kyselyn tulos...

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia Tällä viikolla Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia 1.) Mainitse tietokonepelistä (kuvitteellisesta tai todellisesta) esimerkkitilanteita,

Lisätiedot

CSE-A1200 Tietokannat

CSE-A1200 Tietokannat CSE-A1200 Tietokannat 29.3.2016 CSE-A1200 Tietokannat 29.3.2016 1 / 40 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat

Lisätiedot

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)] Tällä viikolla Kertaus SQL-asioista jatketaan SQL-tekstifuntio-harjoituksia tehdään pelifirman tietokannasta ER-malli MySQL:llä, tarkastellaan mallin toimivuutta ja korjataan, jos korjattavaa löytyy, tehdään

Lisätiedot

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT Agenda Regular Expression - funktiot Case-insensitive Sort Case-insensitive Seach Merge muutokset Tree-walking in 10g DML Returning Values

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 DDL... 5 Tietokantaobjektien määrittely... 5 SQL:n tietotyypit... 6 Eheyssääntöjen määrittely... 9 Indeksin määrittely... 11 Syntaksikuvaukset...

Lisätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

Lisätiedot

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta

Tiedonhallinnan perusteet. H11 Ovien ja kulun valvontajärjestelmän tietokanta Tiedonhallinnan perusteet H11 Ovien ja kulun valvontajärjestelmän tietokanta Nimi: Mikko Haapanen Opiskelijanumero: 0900568 Ryhmä: T09L Työ tehty: 15.3.2010 Mikko Haapanen 15.3.2010 1(7) 1. Asiakasvaatimukset

Lisätiedot

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

3. Taulujen määrittely ja muuttaminen

3. Taulujen määrittely ja muuttaminen 3. Taulujen määrittely ja muuttaminen DDL: Taulujen luonti, muutos ja poisto DML: taulujen tietojen ylläpito Tapahtumien (transaktioiden) hallinta Näkymät, synonyymit ja muut tietokantaobjektit Taulujen

Lisätiedot

VIRTA-tietomallin laajentaminen - Lukuvuosi-maksu

VIRTA-tietomallin laajentaminen - Lukuvuosi-maksu VIRTA-tietomallin laajentaminen - Lukuvuosi-maksu 23.8.2017, fredrik.finnberg@csc.fi CSC Suomalainen tutkimuksen, koulutuksen, kulttuurin ja julkishallinnon ICT-osaamiskeskus Lukuvuosimaksu - muutos Virta

Lisätiedot

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN 3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN DDL: TAULUJEN LUONTI, MUUTOS JA POISTO DML: TAULUJEN TIETOJEN YLLÄPITO TAPAHTUMIEN (TRANSAKTIOIDEN) HALLINTA NÄKYMÄT, SYNONYYMIT JA MUUT TIETOKANTAOBJEKTIT TAULUJEN

Lisätiedot

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Muita tietokantaobjekteja Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto Näkymät Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO NÄKYMÄT Näkymä (view) on looginen näyte tietokannan tauluista tai näkymistä Näkymä ei voi sisältää SELECT INTO,

Lisätiedot

VIRTA-tiedon laadun tukeminen

VIRTA-tiedon laadun tukeminen VIRTA-tiedon laadun tukeminen Fredrik Finnberg 31.8.2016 Tietojen Virta : 1. Korkeakoulu (KK) tuo uudet XML-tiedostot -> validoidaan ja viedään korkeakoulukohtaiseen tietokantaan 2. KK tiedot ladataan

Lisätiedot

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX SQL - perusteet SQL - yleistä Esa Salmikangas InMics SE Oy versio 16.6.2003 SQL - perusteet 1 SQL - perusteet 2 SQL Structured Query Language SQL on tietokantojen käsittelyyn kehitetty kieli yleisimmät

Lisätiedot

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi!

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! 345396! killedwhale@kapsi.fi! Henri Nurmi! 345545! henri.nurmi@kapsi.fi! Harjoitustyö CSE-A1200 Tietokannat Jasse Lahdenperä 345396 killedwhale@kapsi.fi Henri Nurmi 345545 henri.nurmi@kapsi.fi 1 Ensimmäisen vaiheen ratkaisu ER-Kaavio 2 Relaatiomalli: Loanable(Id, MaximumLoanTime)

Lisätiedot

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4);

INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4); CREATE TABLE koulutus ( kunta VARCHAR(25) NOT NULL, tutkinnot NUMERIC(4,2), opiskelijat NUMERIC(1), PRIMARY KEY (kunta) ); INSERT INTO koulutus VALUES ( Helsinki, 22.6, 4); UPDATE koulutus SET opiskelijat

Lisätiedot

Koulutus- ja opetusyhteistyö ja VIRTA-tiedot

Koulutus- ja opetusyhteistyö ja VIRTA-tiedot Koulutus- ja opetusyhteistyö ja VIRTA-tiedot Helena Majamäki 13.9.2017 OPTIETOR ja KooTuki CSC Suomalainen tutkimuksen, koulutuksen, kulttuurin ja julkishallinnon ICT-osaamiskeskus Ajankohtaisia esille

Lisätiedot

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

Koostefunktiot. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa: Funktiot Koostefunktiot Viisi standardifunktiota: AVG -- keskiarvo MIN -- pienin arvo MAX -- suurin arvo SUM -- summa COUNT-- lukumäärä Esim. montako henkilöä on henkilo-taulussa: SELECT Count(*) AS Lkm

Lisätiedot

TIETOKANTOJEN PERUSTEET MARKKU SUNI

TIETOKANTOJEN PERUSTEET MARKKU SUNI TIETOKANTOJEN PERUSTEET MARKKU SUNI SQL - KIELI TIETOJEN MUOKKAUS MARKKU SUNI Tarkastellaan tauluissa olevien tietojen muokkausta muokkauskäskyjä: INSERT UPDATE DELETE Kysymys kuuluu: Voiko tietoja muokata

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu 13.11.2000 HELIA 1 (15) Luento 2.7 Toiminnallisuutta tietokantaan... 2 Deklaratiivinen eheysvalvonta... 2 Proseduraalinen eheysvalvonta... 3 Eheysvalvonnan suunnittelusta... 4 Sääntöjen määrittely... 4 Toteutusvaihtoehdot...

Lisätiedot

Treenitietokannan suunnitteludokumentti

Treenitietokannan suunnitteludokumentti Treenitietokannan suunnitteludokumentti 1 Johdanto 1.1 Järjestelmän tarkoitus Järjestelmän tarkoituksena on luoda Yliopiston Taido Ry:n treenien vetäjille ja treeneissä kävijöille toimiva ympäristö, jossa

Lisätiedot

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista Helsingin yliopisto Tietojenkäsittelytieteen laitos 26.2.2014 (H.Laine) Tietokantojen perusteet Liitteenä: Tiivistelmä SQL-syntaksista Kirjoita jokaiseen erilliseen vastausarkkiin kurssin nimi, tenttipäivä,

Lisätiedot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

Näkymät ja tiedon suojaus

Näkymät ja tiedon suojaus HELIA TIKO-05 1 (23) Näkymät ja tiedon suojaus Näkymät...2 Eri tyyppisiä relaatioita...2 Taulu - Tallennettu relaatio...2 Tulosrelaatio - Kyselyn tulos...2 Työtaulut - Väliaikaisiksi luodut taulut...2

Lisätiedot

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi (

Tietokanta projektin alussa: create table kurssin_tila ( NOT NULL VARCHAR2(60) create table kurssin_tyyppi ( create table opintojakson_tyyppi ( Tietokanta projektin alussa: kurssin_tila ( TILA kurssin_ ( TYYPPI NOT NULL VARCHAR2(1), VARCHAR2(30) NOT NULL VARCHAR2(1), VARCHAR2(30) opintojakson_ ( TYYPPI NOT NULL VARCHAR2(1), VARCHAR2(30) opintojakson_taso

Lisätiedot

Opintosuoritukset. Kaaviokuva

Opintosuoritukset. Kaaviokuva Opintosuoritukset Opintosuoritukset-tiedonsiirtoskeema. XML-skeema jonka avulla voidaan siirtää useita opintosuoritusten tietoja kerralla. Skeeman voi myös lukea sisään muihin skeemoihin jolloin myös yksittäisiä

Lisätiedot

Näkökulmia Diploma Supplementiin /Päivi Aho

Näkökulmia Diploma Supplementiin /Päivi Aho Näkökulmia Diploma Supplementiin 28.08.2018/Päivi Aho Uudistuva DS mitäh!? mitä nyt jo tietojärjestelmässä olevia opiskelijan osaamista kuvaavia tietoja voitaisiin tuoda DS:ään? miten nykyisiä tietojärjestelmiä

Lisätiedot

Virta-tietovarannosta saatavien tietojen tiedosto- ja tietuekuvaus alkaen

Virta-tietovarannosta saatavien tietojen tiedosto- ja tietuekuvaus alkaen TKUVAKO.docx Virta-tietovarannosta saatavien tietojen tiedosto- ja tietuekuvaus 18.04.2017 alkaen Opiskelutiedot/Yo ja Amk Tätä tietuekuvausta käytetään opiskelutietojen tietojenvälityksessä Virta-tietovarannosta

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43 CS-A1150 Tietokannat 27.3.2018 CS-A1150 Tietokannat 27.3.2018 1 / 43 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan relaatioiden (taulujen) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot

Lohdutus - tietokantadokumentti

Lohdutus - tietokantadokumentti Lohdutus - tietokantadokumentti Ohjelmiston tietokanta on toteutettu Oracle-ympäristöön, ja sitä käytetään ohjelmassa Hibernaten kautta. Tietokannan rakenne Tietokannan taulujen merkitykset Taulu Project

Lisätiedot

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opettajana Mika Sorsa, mika.sorsa@koudata.fi, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija Opintojaksolla: keskitytään relaatiotietokantojen teoriaan ja toimintaan SQL-kieli kyselykielenä

Lisätiedot

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44

CS-A1150 Tietokannat CS-A1150 Tietokannat / 44 CS-A1150 Tietokannat 2.4.2019 CS-A1150 Tietokannat 2.4.2019 1 / 44 Oppimistavoitteet: tämän luennon jälkeen Tiedät, miten tietokannan taulujen (relaatioiden) määrittelyt kirjoitetaan SQL:llä. Osaat päivittää

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

Lisätiedot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely Harjoitustehtävä 1 Puutarha Puutarhatunnus omistaja sijainti Vastuualue puutarhatunnus aluenumero maaperä, kosteus valaistus sijainti vastuutonttu Tonttu Tonttutunnus Istutus istutuspäivä paikka_alueella

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot DO NOT PRINT THIS DOCUMENT SQL:ssä joukko yhteenvetofunktioita (aggregate function, koostefunktio) AVG keskiarvo MIN pienin arvo (minimi) MAX suurin arvo (maksimi) SUM summa COUNT lukumäärä Yhteenvetofunktioita

Lisätiedot

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki HELIA TIKO-05 1 (17) SQL / DML 4 Alikyselyt...2 Joukko-operaatiot...7 Yhdiste, unioni...8 Leikkaus...9 Erotus... 10 Tietokannan datan muokkaus... 11 Lisäys... 11 Yhden rivin lisääminen... 12 Useamman rivin

Lisätiedot

Ruokahalu kasvaa syödessä lisää makrokielen herkkuja

Ruokahalu kasvaa syödessä lisää makrokielen herkkuja Turun ammattikorkeakoulu Ruokahalu kasvaa syödessä lisää makrokielen herkkuja SAS Makrokieli - kertaus Makrokielen asiat tapahtuvat ohjelmaa käännettäessä makroprosessorin työn tulos näkyy kääntäjälle

Lisätiedot

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso

Denormalisointia turvallisesti. Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Denormalisointia turvallisesti Ougf syysseminaari 4.11.2010 Pörssitalo Helsinki Timo Raitalaakso Timo Raitalaakso Senior Database Specialist Solita Oy 2001- - 2001 Tampereen Teknillinen korkeakoulu Tietokannat

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 10 TU00AA48-2002 TU10S1E Hannu Markkanen 14.-15.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 SQL: Monen taulun kyselyt

Lisätiedot

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu HELIA 1 (15) Luento 2.6 Käyttöoikeuksista ja suojauksesta... 2 Suojausten suunnittelu... 3 Käyttäjätunnukset... 4 Tunnuksen luominen... 5 Tunnuksen muuttaminen... 6 Tunnuksen poistaminen... 6 Oikeudet

Lisätiedot

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa:

KOOSTEFUNKTIOT. Viisi standardifunktiota: Esim. montako henkilöä on henkilo-taulussa: FUNKTIOT Viisi standardifunktiota: AVG -- keskiarvo MIN -- pienin arvo MAX -- suurin arvo SUM -- summa COUNT -- lukumäärä KOOSTEFUNKTIOT Esim. montako henkilöä on henkilo-taulussa: SELECT Count(*) AS Lkm

Lisätiedot

Kyselyn yleisrakenne:

Kyselyn yleisrakenne: SQL kysely Kyselyn yleisrakenne: select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta] Kysely tuottaa nimettömän

Lisätiedot

Liitokset - haut useaan tauluun

Liitokset - haut useaan tauluun Liitokset Liitokset - haut useaan tauluun Tavallisin liitos on valintaliitos ehtona =,!=, yhtäläisyysliitos (=) yleisin (vrt. Inner join) taulut liitetään toisiinsa yleensä avaimilla (perus-

Lisätiedot

Opiskeluoikeudet. Kaaviokuva

Opiskeluoikeudet. Kaaviokuva Opiskeluoikeudet Opiskeluoikeuksien tiedonsiirtoskeema. XML-skeema jonka avulla on tarkoitus siirtää useiden opiskeluoikeuksien tiedot kerralla. Skeeman voi myös lukea sisään muihin skeemoihin jolloin

Lisätiedot

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä

Tällä viikolla. Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Tällä viikolla Kotitehtävien tarkistus Upotettu SQL Indeksi-harjoitus täydennetään pelifirman tietokantamallia SQL-tehtäviä Seuraavissa harjoituksissa käytetään tukkukauppa-kantaa. 1. Hae kaikki toimittajat

Lisätiedot

VIRTA-termit ruotsiksi

VIRTA-termit ruotsiksi VIRTA-termit ruotsiksi (Kopio aluperäisestä sivusta) Ehdotus muutsiksi korkeakoulujen tietomalliin: käsitteiden ruotsinkieliset nimet Ehdotus korkeakoulujen tietomallin muutsenhallinnassa: https://jira.csc.fi/browse/malli-83

Lisätiedot

VIRTA opintotietopalvelun tietomallin muutokset

VIRTA opintotietopalvelun tietomallin muutokset VIRTA opintotietopalvelun tietomallin muutokset Lauri Jokipii 2.9.2015 KV-tietojen keruu / Liikkuvuusjaksot Opiskeluoikeuden luokittelu Siirto-opiskelijoiden lukukausi-ilmoittautumiset Erikoistumiskoulutus

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Java ja tietokannan käsittely (JDBC)

Java ja tietokannan käsittely (JDBC) Java ja tietokannan käsittely (JDBC) Javan tietokannan käsittely luokat (java.sql.*) Yhteys tietokantaan Tietokannan yhteyden sulkeminen Tiedon haku tietokannasta Tiedon päivitys tietokantaan Transaktio

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

YO 3.2. Opintopistetiedonkeruu 2015

YO 3.2. Opintopistetiedonkeruu 2015 YO 2015 3.2.1. Kerättävät tiedot 3.2.1.1. Harjoittelukouluissa suoritetut (7 alakategoriaa) 3.2.1.2. Vieraskielisessä perustutkinto-opetuksessa suoritetut 3.2.1.3. Kaikki perustutkinto-opiskelijoiden 3.2.1.4.

Lisätiedot

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi. Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, kurssikoe 4.3.2015, H. Laine Tehtävien mukana jaetaan sql-syntaksin tiivistelmä. Kirjoita kuhunkin erilliseen vastauspaperiin

Lisätiedot

OUTER JOIN se vanha kunnon kaveri

OUTER JOIN se vanha kunnon kaveri OUTER JOIN se vanha kunnon kaveri Ulkoliitoksia on kolmenlaisia Left -> vasemmasta taulusta otetaan ehdot täyttävät rivit ja yhdistetään oikeanpuoleiseen tauluun jos rivi löytyy - nested loop join Right

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

Suorituksen sisältyminen toiseen suoritukseen (jonka id)

Suorituksen sisältyminen toiseen suoritukseen (jonka id) RAKETTI-VIRTA Lunos yhteisen tietoarkkitehtuurin pääkohdista 10.4.2012 sivu 1/10 RAKETTI-VIRTA-projekti 10.4.2012: korkeakoulujen valtakunnalliseen tietovaranto tutoavat tiedot rajattu rivitasolla Mukana

Lisätiedot

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 ICS-C2000 Tietojenkäsittelyteoria Kevät 2016 Kierros 6, 22. 26. helmikuuta Huom: arviointiviikolla 15. 19.2. ei ole laskuharjoituksia! Demonstraatiotehtävien ratkaisut D1: (a) Osoita, että seuraava yhteydetön

Lisätiedot

HELIA 1 (14) Outi Virkki Tiedonhallinta

HELIA 1 (14) Outi Virkki Tiedonhallinta HELIA 1 (14) Luento Transaktion / Tapahtuman hallinta... 2 Taustaa... 3 Tapahtuman käsite... 5 ACID-ominaisuudet... 7 Samanaikaisuuden hallinta... 8 Lukitukset... 9 Toipuminen... 10 Loki-tiedosto... 11

Lisätiedot

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 8. Saapumisryhmä: Pasi Ranne /9/13 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 8 XX00AA79-3013 TU12S2 Pasi Ranne 25.9.2013 25/9/13 Helsinki Metropolia University of Applied Sciences 1 Harjoitustyö Harjoitustöiden tilanne

Lisätiedot

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta SQL tietokantakieli SQL:llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman

Lisätiedot

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet DO NOT PRINT THIS DOCUMENT SQL -valintaehto CREATE TABLE opettaja ( opetunnus varchar(12) NOT NULL, nimi varchar(40) NOT NULL, puhelin varchar(12), tyohuone varchar(12), PRIMARY KEY (opetunnus) ) ; CREATE

Lisätiedot

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli tietokantakieli :llä voidaan... määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta näytölle tai tiedostoon sovellusohjelman käyttöön

Lisätiedot

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus

Esimerkki. pankkien talletus- ja lainatietokanta: Yhdiste, leikkaus, erotus ym. Leikkaus (intersect) Yhdiste (Union) Erotus (except/minus) Leikkaus Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

OpenOffice.org Base 3.1.0

OpenOffice.org Base 3.1.0 OpenOffice.org Base 3.1.0 Sisällysluettelo 1 Tietokannan luominen...1 2 Taulukon eli taulun luominen...3 3 Kysely...9 4 Raportti...14 1 Tietokannan luominen Tietokanta on kokoelma tietoja, joilla on yhteys

Lisätiedot

Yhdiste, leikkaus, erotus ym.

Yhdiste, leikkaus, erotus ym. Yhdiste, leikkaus, erotus ym. SQL tarjoaa myös relaatioalgebran operaatiot yhdiste, leikkaus, erotus Näissä operaatioissa taulujen on oltava samarakenteisia, ts. niissä on oltava samantyyppiset vastinsarakkeet.

Lisätiedot

ALMU-järjestelmä Suunnitteludokumentti

ALMU-järjestelmä Suunnitteludokumentti ALMU-järjestelmä Suunnitteludokumentti Helsingin yliopisto TKTL Ohjelmistotuotantoprojekti Projektiryhmä: Peter Ahlberg, Marika Korhonen, Tomi Kuittinen, Iikka Meriläinen, Jukka Narkiniemi SISÄLLYS 1 Johdanto...

Lisätiedot

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI Tarkastellaan Tietokannan fyysistä suunnittelua Menetelmän vaihetta 4 Looginen suunoitelma muutetaan toimiviksi tauluiksi Id enimi snimi muuta 1 Aki Joki xxx

Lisätiedot

SELECT-lauseen perusmuoto

SELECT-lauseen perusmuoto SQL: Tiedonhaku SELECT-lauseen perusmuoto SELECT FROM WHERE ; määrittää ne sarakkeet, joiden halutaan näkyvän kyselyn vastauksessa sisältää

Lisätiedot

Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä www.turkuamk.fi

Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä www.turkuamk.fi Markku Suni Turun ammattikorkeakoulu Dynaamista ja joustavaa ohjelmointia - maukasta makrokielellä SAS Makrokieli SAS Makrokieli on kieli SAS-kielen laajennus datavaihetta muistuttavia lauseita ja funktioita

Lisätiedot

Jatko-opinto oikeuden lisääminen HY:n tutkinto-opiskelijoille ja uusille opiskelijoille

Jatko-opinto oikeuden lisääminen HY:n tutkinto-opiskelijoille ja uusille opiskelijoille Helsingin yliopisto WinOodi Sivu 1/6 Jatko-opinto oikeuden lisääminen HY:n tutkinto-opiskelijoille ja uusille opiskelijoille Avaa kaksi WinOodi näkymää rinnakkain näytölle. 1. WinOodi: Opiskelijan perustietoikkunasta

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL FinFamily PostgreSQL 1 Sisällys / Contents FinFamily PostgreSQL... 1 1. Asenna PostgreSQL tietokanta / Install PostgreSQL database... 3 1.1. PostgreSQL tietokannasta / About the PostgreSQL database...

Lisätiedot