town
テーブルからkoaza_name
が空でないレコードを抽出。
SELECT lg_code,town_id,pref_name,county_name,city_name,od_city_name,oaza_town_name,koaza_name FROM town WHERE koaza_name !='';
town
テーブルからkoaza_name
が空でないレコードを選択し、lg_code
ごとにグループ分けして、各グループ内で最初のレコードのみを抽出。
SELECT
pref_name,
county_name,
city_name,
od_city_name,
oaza_town_name,
chome_name,
koaza_name
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY lg_code ORDER BY town_id) as row_num
FROM
town
WHERE
koaza_name != ''
) as subquery
WHERE
row_num = 1;
SELECT DISTINCT koaza FROM town WHERE city_key="3819206177" AND koaza <> '' ORDER BY koaza
- rsdt全件
- 結果: 22,501,162 行が 36265ms で返されました
SELECT DISTINCT
city.pref,
city.city,
city.ward,
rsdtdsp_rsdt.oaza_cho,
rsdtdsp_rsdt.chome,
rsdtdsp_rsdt.koaza,
rsdtdsp_rsdt.blk_num,
CASE
WHEN rsdtdsp_rsdt.rsdt_num IS NOT NULL AND rsdtdsp_rsdt.rsdt_num <> ''
THEN '-' || rsdtdsp_rsdt.rsdt_num
ELSE rsdtdsp_rsdt.rsdt_num
END AS rsdt_num,
CASE
WHEN rsdtdsp_rsdt.rsdt_num2 IS NOT NULL AND rsdtdsp_rsdt.rsdt_num2 <> ''
THEN '-' || rsdtdsp_rsdt.rsdt_num2
ELSE rsdtdsp_rsdt.rsdt_num2
END AS rsdt_num2
FROM
rsdtdsp_rsdt
JOIN
city
ON
rsdtdsp_rsdt.lg_code = city.lg_code;
- 地番全件
- 結果: 202,881,884 行が 744804ms で返されました
SELECT DISTINCT
city.pref,
city.city,
city.ward,
parcel.oaza_cho,
parcel.chome,
parcel.koaza,
parcel.prc_num1,
CASE
WHEN parcel.prc_num2 IS NOT NULL AND parcel.prc_num2 <> ''
THEN '-' || parcel.prc_num2
ELSE parcel.prc_num2
END AS prc_num2,
CASE
WHEN parcel.prc_num3 IS NOT NULL AND parcel.prc_num3 <> ''
THEN '-' || parcel.prc_num3
ELSE parcel.prc_num3
END AS prc_num3
FROM
parcel
JOIN
city
ON
parcel.lg_code = city.lg_code;
- pref, county, city, ward, oaza_cho, chome, koazaを結合
SELECT
p.pref ||
COALESCE(c.county, '') ||
c.city ||
COALESCE(c.ward, '') ||
COALESCE(t.oaza_cho, '') ||
COALESCE(t.chome, '') ||
COALESCE(t.koaza, '') ||
' /*' || p.pref_key || ',' || c.city_key || ',' || t.town_key || '*/'
AS full_address
FROM town t
JOIN city c ON t.city_key = c.city_key
JOIN pref p ON c.pref_key = p.pref_key
ORDER BY c.lg_code, t.machiaza_id;