Přehled nad vlastnickou databází ČÚZK. Souhrny, žebříčky a rozložení počítané hromadně přes celý dataset.
Klasifikace podle vzoru ve jménu / adrese. Fyzické osoby zahrnují i SJM manželů.
SELECT CASE WHEN "VlastnikJmeno" ~* '(s\.r\.o\.|a\.s\.|v\.o\.s\.|k\.s\.|s\.p\.|z\.s\.)' THEN 'PO – firma' WHEN "VlastnikJmeno" ~* '(obec |m[ěe]sto |kraj |republika|statut)' THEN 'Obec / stát' WHEN "VlastnikJmeno" ~* '(spole[čc]enstv[íi]|bytov[ée] dru[žz])' THEN 'SVJ / BD' WHEN "VlastnikAdresa" !~ '[0-9]{3} ?[0-9]{2}' THEN 'Zahraniční' ELSE 'Fyzická osoba' END AS typ, count(*) AS pocet FROM public."data" GROUP BY 1 ORDER BY 2 DESC;
Kolik různých vlastníků nese dané příjmení – četnost jména, ne velikost vlastnictví. Ženské a mužské tvary zvlášť. Reálná data.
SELECT split_part("VlastnikJmeno",' ',1) AS prijmeni, count(DISTINCT ("VlastnikJmeno"||'|'||"VlastnikAdresa")) AS vlastniku FROM public."data" WHERE "VlastnikJmeno" !~* '(s\.r\.o\.|a\.s\.|obec|město|kraj|dru[žz]stvo|spole)' GROUP BY 1 ORDER BY 2 DESC LIMIT 15;
Bez státu a samospráv. Top 50 · agregace na vlastníka (jméno + adresa).
Jaký podíl všech nemovitostí drží nejmenší procento vlastníků. Čím větší prohnutí od úhlopříčky, tím nerovnoměrnější rozdělení.
WITH vl AS ( SELECT count(*) AS n FROM public."data" GROUP BY "VlastnikJmeno", "VlastnikAdresa" ), r AS ( SELECT n, percent_rank() OVER (ORDER BY n DESC) AS pct FROM vl ) SELECT round(100.0*sum(n) FILTER(WHERE pct<=0.01)/sum(n),1) AS top1_pct, round(100.0*sum(n) FILTER(WHERE pct<=0.10)/sum(n),1) AS top10_pct FROM r;
Počet záznamů podle okresu nemovitosti (top 15). Reálná data z pole "Okres".
SELECT "Okres", count(*) AS zaznamu FROM public."data" GROUP BY 1 ORDER BY 2 DESC;
Adresy bez českého PSČ, seskupené podle země.
SELECT substring("VlastnikAdresa" from '([^,]+)$') AS zeme, count(*) AS pocet FROM public."data" WHERE "VlastnikAdresa" !~ '[0-9]{3} ?[0-9]{2}' GROUP BY 1 ORDER BY 2 DESC LIMIT 10;
Podíl záznamů, které v části C nesou aspoň jedno omezení — zástavní právo (typicky hypotéka), exekuci nebo věcné břemeno. Reálná data z pole "OmezeniNaNemovitosti".
Součet tří hlavních typů (43,4 %) je nižší než 47,2 % — zbytek tvoří další zápisy (zákaz zcizení a zatížení, poznámky). Jeden záznam může nést víc omezení zároveň.
"OmezeniNaNemovitosti" obsahuje jen druh zápisu („Zástavní právo smluvní", „Zákaz zcizení", „Věcné břemeno"…), ne jméno věřitele.-- podíl záznamů s aspoň jedním omezením + rozpad typů (část C LV) SELECT round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" IS NOT NULL AND "OmezeniNaNemovitosti" <> '')/count(*),1) AS pct_zatizenych, round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'z[áa]stavn[íi] pr[áa]vo')/count(*),1) AS pct_zastava, round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'exeku')/count(*),1) AS pct_exekuce, round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'v[ěe]cn[ée] b[řr]emeno|slu[žz]ebnost')/count(*),1) AS pct_bremeno FROM public."data";
Podíl záznamů se zápisem v části C podle okresu nemovitosti — rozpad na zástavní právo, exekuci a věcné břemeno (top 14 podle zástav). Reálná data.
-- podíl zatížených nemovitostí podle okresu SELECT "Okres", round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'z[áa]stavn[íi] pr[áa]vo')/count(*),1) AS zastava_pct, round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'exeku')/count(*),1) AS exekuce_pct, round(100.0*count(*) FILTER(WHERE "OmezeniNaNemovitosti" ~* 'v[ěe]cn[ée] b[řr]emeno|slu[žz]ebnost')/count(*),1) AS bremeno_pct FROM public."data" GROUP BY 1 ORDER BY 2 DESC; -- pozn.: procenta typů se mohou překrývat (jeden LV může nést víc omezení)
Kolik pozemků a budov (mimo bytové jednotky) drží víc spoluvlastníků. Reálné dědické drobení sedí hlavně v pásmech 3+ spoluvlastníků a týká se nejčastěji zemědělských a lesních pozemků a historických polních cest.
"ZpusobVyuziti") a pásmo „2" (často SJM) ber s rezervou — vypovídající je až 3+. Reálná data, počítáno vážením 1/"PocetVlastniku" na jednu věc.Rozdělení pozemků a budov podle počtu spoluvlastníků (bez bytových jednotek):
-- rozdělení POZEMKŮ a BUDOV (mimo byty) podle počtu spoluvlastníků -- každý řádek = 1/"PocetVlastniku" jedné věci (nepotřebuje id věci) SELECT CASE WHEN p <= 1 THEN '1 vlastník' WHEN p = 2 THEN '2 (často SJM)' WHEN p BETWEEN 3 AND 5 THEN '3–5' WHEN p BETWEEN 6 AND 10 THEN '6–10' WHEN p BETWEEN 11 AND 50 THEN '11–50' ELSE '51+' END AS pasmo, round(sum(1.0/p)) AS veci FROM ( SELECT "PocetVlastniku" AS p FROM public."data" WHERE ("ZpusobVyuziti" IS NULL OR "ZpusobVyuziti" !~* 'byt|jednotk') AND "PocetVlastniku" >= 1 ) x GROUP BY 1 ORDER BY min(p);
Počet věcí podle pole "ZpusobVyuziti" (rodinný dům, byt, rekreační stavba, zemědělská stavba…), vážený na jednu věc přes 1/"PocetVlastniku". Reálná data.
-- skladba podle způsobu využití (vážená na jednu věc) SELECT "ZpusobVyuziti", round(sum(1.0/"PocetVlastniku")) AS veci FROM public."data" WHERE "ZpusobVyuziti" IS NOT NULL AND "PocetVlastniku" >= 1 GROUP BY 1 ORDER BY 2 DESC;
Rok, od kterého platí současný vlastnický zápis (pole "PlatiOd") — vrchol 2021 (277 tis.). Reálná data.
-- rok vzniku současného vlastnictví (pole PlatiOd) SELECT rok, count(*) AS pocet FROM ( SELECT (substring("PlatiOd"::text from '(\d{4})'))::int AS rok FROM public."data" WHERE "PlatiOd" IS NOT NULL ) t WHERE rok BETWEEN 1993 AND 2026 GROUP BY 1 ORDER BY 1;