分组并比较字符串列中的数字

时间:2017-08-05 06:20:50

标签: mysql

我有一个包含字母数字内容的mysql表。该数字的格式为“ / prop / xx / xxx ”,因此我使用'substring'来提取它们。但我需要通过desc来对其人口进行分组和排序。

enter image description here

所以我的理想代码就像这样

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位数或更多

1 个答案:

答案 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(*)