Download as pdf or txt
Download as pdf or txt
You are on page 1of 13

Adatkezelő utasítások – PostgreSQL

SELECT-kiválasztani
INSERT-adat beírása
UPDATE-adatok módosítása
DROP/DELETE-törlés
INSERT INTO-
ORDER BY-sorrendbe helyezés

SELECT COUNT *
FROM tablazat_neve -→megszámolja a sorokat a táblázatban

ALTER TABLE tablazat_neve


ADD COLUMN oszlop_neve →oszlop beszúrása

UPDATE tablazat_neve
SET műveletek elvégzése az oszlopban →frissítés

DELETE FROM tablazat_neve


WHERE első oszlopból való adat ’65’ →sor törlése

SELECT oszlop_neve
FROM tablazat_neve
ORDER BY oszlop neve ASC/DSC →sorrendbe helyezés

CREATE TABLE uj_tablazat_neve AS


SELECT a.oszlop1, … a.oszlopn, b.geom (általában)
FROM meglevo_tablazat a
LEFT JOIN terbeli_adat b
ON a.natcode=b.natcode::integer (vagy ami kell) → új táblázat létrehozása a térbeli adat és a meglévő
összekapcsolásával

ALTER TABLE tablazat neve


ADD COLUMN terulet DOUBLE PRECISION

UPDATE tablazat_neve
SET terulet = st_area(geom)/1000*1000 →terület kiszámítása km2-ben

ALTER TABLE tablazat_neve


ADD COLUMN suruseg DOUBLE PRECISION

UPDATE tablazat_neve
SET suruseg = aminek_a_surusege_kell/terulet →sűrűség kiszámítása,

SELECT egyseg, name


FROM tablazat_neve
WHERE name = ’XY’ → hány egység van XY településen (ha tudjuk a település nevét)

SELECT egyseg, name


FROM tablazat_neve
WHERE name LIKE ’%XY%’ → hány egység van XY településen, ha nem tudjuk biztosra a nevet
SELECT name,
ST_GeometryType(geom),
ST_Length(geom)
FROM tablazat_neve
WHERE name ='Utszakasz Neve' → kiszámítja az útszakasz hosszát

SELECT Sum(ST_Area(geom))/1000 as area_ha


FROM tablazat_neve
WHERE name ='XY' → terület hektárban

SELECT *
FROM adminisztrativ_egysegek

SELECT name, ST_Area(geom)/(1000*1000) as terulet


FROM adminisztrativ_egysegek
ORDER BY terulet asc

SELECT name,
ST_GeometryType(geom),
ST_Length(geom)
FROM roads_osm_stereo
WHERE name ='Autostrada Transilvania'

SELECT
name,
ST_AsGeoJSON(geom)
FROM roads_osm_stereo
WHERE name ='Șoseaua Pantelimon'

SELECT Sum(ST_Area(geom))/1000 as area_ha


FROM adminisztrativ_egysegek
WHERE name ='Cluj-Napoca'

SELECT Sum(ST_Area(geom))/1000 as area_ha


FROM adminisztrativ_egysegek
WHERE name ='Sibiu'

SELECT ST_X(ST_centroid(geom)),name
FROM uat_limit_stereo
ORDER BY ST_X(ST_centroid(geom))
LIMIT 1;

SELECT sum(ST_Length(geom))/1000 as length_km


FROM roads_osm_stereo
WHERE name= 'Calea dorobanților';

SELECT fclass, SUM(ST_Length(geom))/1000 as length


FROM roads_osm_stereo
GROUP BY fclass
ORDER BY length DESC

SELECT DISTINCT (a.id), b.id


FROM building_cluj a, building_cluj b
WHERE st_equals (a.geom, b.geom) = 't'
AND a.id <> b.id
""
SELECT name, ST_AsText(geom)
FROM bus_station
WHERE name ='Memo';

SELECT name
FROM neighborhood
WHERE ST_Intersects(geom, st_geomfromtext('POINT(392086.39740632597
586488.9389058831)',31700))

SELECT name
FROM neighborhood
WHERE ST_disjoint(geom, st_geomfromtext('POINT(392086.39740632597
586488.9389058831)',31700))

SELECT roads.id
FROM roads, highways
WHERE st_crosses(roads.geom, highways.geom);

SELECT DISTINCT (b.name)


FROM hazardous_waste_sites a, sensitive_areas b
WHERE st_overlaps (a.geom, b.geom) = 't';

select st_touches(lake.geom, street.geom)


from lake, street

select n.name
from hospital h
cross join neighborhood n
where st_contains(n.geom, h.geom)

select n.name
from hospital h
cross join neighborhood n
where st_within(h.geom, n.geom)
select *, st_distance(h.geom, b.geom)
from hospital h
cross join bus_station b

select st_distance(h.geom, b.geom), *


from hospital h
cross join bus_station b
where st_dwithin(h.geom,b.geom,1800)

select *
from populatie_sb

4.Számítsa ki a Népességnövekedés ütemét (%) 2014-2022 (oszlop hozzáadása, a mutató kiszámítása);

alter table populatie_sb


add column nepesseg_novekedes double precision

update populatie_sb
set nepesseg_novekedes=(pop_2022-pop_2014)/pop_2014::double precision *100

5. Hány sor van a táblázatban (count);

select count (*)


from populatie_sb

6. Válassza ki a táblázat következő oszlopait: siruta, localitate, pop_2022;

select natcode, localitate, pop_2022


FROM populatie_sb

7. Mennyi Szeben megye összlakossága 2014-ben?

SELECT SUM (pop_2014)


FROM populatie_sb

8. Mennyi Medgyes (Mediaș) város teljes lakossága 2022-ben?

SELECT pop_2022,localitate
FROM populatie_sb
WHERE localitate LIKE '%MEDIAS%'

9. Rendeze csökkenő sorrendbe a 2022-es népességet;

SELECT *
FROM populatie_sb
ORDER BY pop_2022 DESC

10. Távolítsa el az utolsó 6 karaktert a szöveges karakterláncok végéből: 143450 MUNICIPIUL


SIBIU

SELECT RIGHT (localitate,6)


FROM populatie_sb
WHERE localitate LIKE '%MUNICIPIUL SIBIU%'

Select *
from kereskedelem_sb

Select *
from kereskedelem_uat

drop table kereskedelem_uat_2

5. új táblázat létrehozása a térbeli adat és a meglévő összekapcsolásával

create table kereskedelem_uat as


select a.id, a.commercial_units, a.natcode, a.name, b.geom
from kereskedelem_sb a
left join uat_sibiu b
on a.natcode=b.natcode :: integer

6.összes település területének kiszámítása négyzetkilométerben

alter table kereskedelem_uat


add column terulet double precision

update kereskedelem_uat
set terulet=st_area(geom)/1000*1000

7. kereskedelmi egysegek surusege minden adminisztrativ egysegre

alter table kereskedelem_uat


add column suruseg double precision

update kereskedelem_uat
set suruseg=commercial_units/terulet

8.hány sor van kereskedelem_uat tablazatban?

SELECT count(*)
from kereskedelem_uat
--eredmeny 64
9. hány kereskedelmi egység van Nagyszebenben

SELECT commercial_units, name


FROM kereskedelem_sb
WHERE NAME='SIBIU'

10.hány kereskedelmi egység van medgyesen?

SELECT commercial_units, name


FROM kereskedelem_sb
WHERE name LIKE '%MEDIA%'

11.mekkora Felek(Avrig) város terulete

SELECT terulet, name


FROM kereskedelem_uat
WHERE NAME='AVRIG' - 168335105.59151405 km2

12.kereskedelmi egységek sűrűsége csökkenő sorrendben

SELECT commercial_units
FROM kereskedelem_uat
ORDER BY commercial_units DESC

13.kereskedelmi egysegek sűrűsége Szentágotán (Agnita)

SELECT suruseg, name


FROM kereskedelem_uat
WHERE NAME='AGNITA'

14. Mennyi a kereskedelmi egységek sűrűsége Sellenberkben (Șelimbăr)?

SELECT suruseg, name


FROM kereskedelem_uat
WHERE name LIKE '%SELIMBAR%'

15. Számitsa ki egy új oszlopba minden adminisztratív egység centroidját.

alter table kereskedelem_uat


add column centroid double precision

update kereskedelem_uat
set centroid=st_centroid(geom)

16. Számítsa ki Nagyszeben és Medgyes közötti távolságot km-ben felhasználva a centroidokat

select a.name, b.name, st_distance (a.centroid, b.centroid)/1000 as tavolsag


from kereskedelem_uat a, kereskedelem_uat b
where a.name='SIBIU' and b.name like 'MEDIA%'
--
create table kereskedelem_uat as
select a.name, a.natcode, b.geom
from kereskedelem_sb a
left join uat_sibiu b
on a.natcode=b.natcode :: integer

5.
Create table kereskedelem_uat as
Select a.name, a.id, a.natcode, b.geom
From kereskedelem_sb a
Left join uat_sibiu b
On a.natcode=b.natcode

6.
select name,st_area(geom) /(1000*1000) :: double precision as terulet
from kereskedelem_uat

--akkor kell ez az alter tables muvelet, mikor a tablazatodban meg akarod tartani a kiszamolt ertekeket.
Ha siman csak a fuggvenyek vannak (ezek a kis szarok vannak beirva),nincs odairva hogy create table,
vagy alter table add colum, akkor csak megjeleniti neked (persze azokat is le lehet tolteni kulon
tablazatkent, de az eredeti tablazatban, amiben dolgozol nem marad meg). ezert kell te kulon megmond
neki, hogy hozzon letre tablazatot, vagy adjon hozza sorokat, oszlopokat
--minden valtoztatast a tablazatotban, adataidban ezek a fuggvenyek, scriptek, parancsok (nem tom mi a
helyes neve) alapjan tidsz csinalni.
--az egyszeru dolgok, mint a tablazat letrehozara, torlese, vagy hasonlok meg lehet csinalni egyszeruen,
de a tobbit mind be kell irni

alter table kereskedelem_uat


add column terulet

update kereskedelem_uat
set terulet=st_area(geom)/ (1000*1000) :: double precision
--inkabb ezt hasznaljuk, mert meg lesz egy teruletes feladat es kellenek majd a terulet adatok, ezert
csinalunk meg egy oszlopot, aminek terulet lesz a neve. A tablazat frissitesevel pedig megmondjuk neki,
hogy ebben az oszlopban az altalunk megadott keplet alapjan vegezze el a szamitasokat
--megcsinal mindent helyettunk a gep, csak kell tudni, hogy hogy mond meg neki es hgy mit hol keressen

alter table kereskedelem_uat


add column centroid geometry

update kereskedelem_uat
set centroid=st_centroid(geom)

--tavolsagot szamolunk ki ket telepules kozott a centroid alapjan. A tavolsagot siman St_distance
fuggvennyel szamoljuk ki, de a zarojelbe nem geomot irunk vagy centroidot, hanem megadjuk a ket
telepulest, a es b oszlopbol: a.centroid, b.centroid
--fromnal megadjuk ketszer a tablazatot kulon, kulon elnevezve
-- a vege osztjuk 1000-el mert km-ben keri
--megcsinaljuk most helyesen:

select a.name, b.name, st_distance (a.centroid, b.centroid)/1000 as tavolsag


from kereskedelem_uat a, kereskedelem_uat b
where a.name='SIBIU' and b.name like 'MEDIA%'

SELECT *
FROM max_homerseklet

SELECT datum, homerseklet


FROM max_homerseklet

SELECT homerseklet, datum, meteo_allomas, id


FROM max_homerseklet

SELECT *
FROM max_homerseklet
WHERE datum ::TEXT LIKE '%1998-03%'

SELECT *
FROM max_homerseklet
WHERE datum >= '1998-03-01' AND datum <= '1998-03-31'

SELECT *
FROM max_homerseklet
WHERE datum ::TEXT = '1998-03-03'

SELECT *
FROM max_homerseklet
WHERE datum >= '1961-01-01' OR homerseklet = '38'

SELECT *
FROM max_homerseklet
WHERE homerseklet = '38'

SELECT *
FROM max_homerseklet
WHERE (datum >= '1961-01-01' AND datum <= '1961-01-31' ) AND homerseklet ::TEXT like '%-1%'

SELECT AVG (homerseklet)


FROM max_homerseklet
WHERE datum >= '1988-11-01' AND datum <= '1988-11-30'
DROP TABLE kereskedelem_uat
CREATE TABLE kereskedelem_uat AS
SELECT a.natcode, a.name, a.geom, b.commercial_units
FROM uat_sb a
LEFT JOIN kereskedelem_sb b
ON a.natcode=b.natcode

SELECT *
FROM kereskedelem_uat

ALTER TABLE kereskedelem_uat


ADD COLUMN terulet DOUBLE PRECISION

UPDATE kereskedelem_uat
SET terulet=ST_Area(geom)/(1000*1000)

SELECT *
FROM kereskedelem_uat

ALTER TABLE kereskedelem_uat


ADD COLUMN suruseg DOUBLE PRECISION

UPDATE kereskedelem_uat
SET suruseg=commercial_units/terulet :: DOUBLE PRECISION

SELECT *
FROM kereskedelem_uat

SELECT count(*)
FROM kereskedelem_uat

SELECT name, commercial_units


FROM kereskedelem_uat
WHERE name = 'SIBIU'

SELECT name, commercial_units


FROM kereskedelem_uat
WHERE name like '%MEDIA%'

SELECT name, terulet


FROM kereskedelem_uat
WHERE name = 'AVRIG'

SELECT *
FROM kereskedelem_uat
ORDER by suruseg DESC

SELECT name, suruseg


FROM kereskedelem_uat
WHERE name like '%ELIMB%'
SELECT name, suruseg
FROM kereskedelem_uat
WHERE name like '%AGNITA%'
---------------------
ALTER TABLE kereskedelem_uat
ADD COLUMN centroid geometry

UPDATE kereskedelem_uat
SET centroid = ST_Centroid(geom)

SELECT *
FROM kereskedelem_uat

SELECT ST_Distance(a.centroid, b.centroid)/1000 as km


FROM kereskedelem_uat a, kereskedelem_uat b
WHERE a.name='SIBIU' AND b.name LIKE 'MEDIA%'

SELECT ST_Centroid (geom)


FROM adminisztrativ_egysegek

CREATE TABLE centroid_uat2 as


SELECT ST_Centroid (geom)
FROM adminisztrativ_egysegek

SELECT ST_AsText(ST_Buffer(geom,15000))
FROM hospital

CREATE TABLE hospital_buffer AS


SELECT ST_Buffer(geom,15000)
FROM hospital

CREATE TABLE Intersection_sites AS


SELECT ST_Intersection (a.geom,b.geom)
FROM hazardous_waste_sites a
Cross Join sensitive_areas b

CREATE TABLE Union_sites AS


SELECT ST_Union (a.geom,b.geom)
FROM hazardous_waste_sites a
Cross Join sensitive_areas b

SELECT name, ST_Area(geom)/(1000*1000)


FROM adminisztrativ_egysegek
WHERE name='Cluj-Napoca'

SELECT name, ST_Length(geom) as meter


FROM roads_osm_stereo
WHERE name='Calea-Turzii'

CREATE TABLE Intersection_sites AS


SELECT ST_Intersection (a.geom,b.geom)/1000 as kilometer
FROM hazardous_waste_sites a
Cross Join sensitive_areas b

SELECT name, ST_Length(geom)/1000 as kilometer


FROM roads_osm_stereo
WHERE name='Calea-Turzii'

CREATE TABLE Sibiu AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Sibiu'

Create table centroid_sibiu as


SELECT ST_Centroid(geom)
FROM Sibiu

CREATE TABLE Brasov AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Brașov'

DROP TABLE uat_limit_stereo

Create table centroid_brasov as


SELECT ST_Centroid(geom)
FROM Brasov

CREATE TABLE Strada_Republicii AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Strada Republicii'

CREATE TABLE centroid_Strada_Republicii AS


SELECT ST_Centroid(geom)
FROM Strada_Republicii

SELECT *
FROM adminisztrativ_egysegek
WHERE name=

CREATE TABLE Reghin AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Reghin'

CREATE TABLE Oradea AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Oradea'

CREATE TABLE BaiaMare AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Baia Mare'

create table bus_buffer AS


select ST_Buffer (geom,2000)
FROM bus_station

CREATE TABLE bulevardulcarol AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Bulevardul Carol I'

Create table centroid_bistrita as


SELECT ST_Centroid(geom)
FROM Bistrita

CREATE TABLE Bistrita AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Bistrița'

CREATE TABLE Cluj AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Cluj-Napoca'

Create table centroid_cluj as


SELECT ST_Centroid(geom)
FROM cluj

CREATE TABLE albaiulia AS


SELECT *
FROM adminisztrativ_egysegek
WHERE name ='Alba Iulia'

Create table centroid_albaiulia as


SELECT ST_Centroid(geom)
FROM albaiulia

CREATE TABLE soseaua_victoriei AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Șoseaua Victoriei'

CREATE TABLE centroid_soseaua_victoriei AS


SELECT ST_Centroid(geom)
FROM soseaua_victoriei

CREATE TABLE calea_victoriei AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Calea Victoriei'

CREATE TABLE centroid_caleavictoriei AS


SELECT ST_Centroid(geom)
FROM calea_victoriei

CREATE TABLE calea_motilor AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Calea Moților'

CREATE TABLE centroid_calea_motilor AS


SELECT ST_Centroid(geom)
FROM Calea_Motilor

CREATE TABLE calea_craiovei AS


SELECT *
FROM roads_osm_stereo
WHERE name ='Calea Craiovei'

CREATE TABLE centroid_calea_craiovei AS


SELECT ST_Centroid(geom)
FROM Calea_craiovei

create table iskola_buffer AS


select ST_Buffer (geom,500)
FROM iskola

CREATE TABLE iskola as


SELECT *
FROM

CREATE TABLE kolozsvar_balesetek


SELECT ST_Intersection (a.geom, b.geom )
FROM accidents_point a
CROSS JOIN cluj b

You might also like