我有一个包含字母数字内容的mysql表。该数字的格式为“ / prop / xx / xxx ”,因此我使用'substring'来提取它们。但我需要通过desc来对其人口进行分组和排序。
所以我的理想代码就像这样
presto> select tt.value
-> from (VALUES '{"0": 0.2, "1": 1.2, "2": 0.5, "15": 1.2, "20": 0.7}') as t(json)
-> CROSS JOIN UNNEST(CAST(json_parse(json) AS MAP<BIGINT, DOUBLE>)) AS tt(key, value)
-> ;
value
-------
0.2
1.2
1.2
0.5
0.7
(5 rows)
我知道这个代码不可能有任何建议吗?
PS。 page_url 中的数字可以是4位数或更多
答案 0 :(得分:1)
您没有聚合功能,因此您应该使用distinct而不是group by
SELECT distinct SUBSTRING(`page_url`,-3) as pid
from `prop_log`
order by pid
如果只需要数字
的行 SELECT distinct SUBSTRING(`page_url`,-3) as pid
from `prop_log`
WHERE `page_url` REGEXP '[0-9]'
order by pid
和行数
SELECT SUBSTRING(`page_url`,-3) as pid
from `prop_log`
WHERE `page_url` REGEXP '[0-9]'
group by SUBSTRING(`page_url`,-3)
order by count(*)