Obliczenie statystyk przy wykorzystaniu regexp_replace

SELECT
regexp_replace( url ,E'^http:\/\/.*\/(.*)-(\\d+).html(\\?)?(.*)?', E'\\1') AS t_name,
regexp_replace( url ,E'^.*-(\\d+).html(\\?)?(.*)?', E'\\1')::INTEGER AS t_id,
COUNT(*) AS t_cnt
FROM unnest(
ARRAY[
'http://kody.wig.pl/ustawienie_wartosci_pol_input_w_formularzu_strony-15.html',
'http://kody.wig.pl/ustawienie_wartosci_pol_input_w_formularzu_strony-15.html?
action=test&value1=118-115&value2=119-116'

]
) AS t(url)
GROUP BY t_name, t_id

Wynik:

"ustawienie_wartosci_pol_input_w_formularzu_strony";15;2

Wyszukiwanie punktów po odległości przy użyciu funkcji length

Przykładowy sql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT *, LENGTH(p_path::path) AS distance FROM
(
SELECT
*,
p.p_name,
'((54.175540523964, 15.527111972064), ('||p_lat::text||','||p_lng::text||'))' AS p_path
FROM
points p
WHERE
p.p_status
(p.m_id=5 OR (
51.175540 < p_lat AND p_lat < 57.17554
AND 12.52711 < p_lng AND p_lng < 18.52711))
ORDER BY
p.m_id=5 DESC NULLS LAST
) t ORDER BY distance ASC LIMIT 6