从SQL中的多数据列中提取数据

时间:2018-08-28 08:40:27

标签: sql postgresql

我正在HOLISTICS中创建一个销售排行榜,并且列“ user_id ”是一个多数据列。

以下是“ user_id”列的快照:

enter image description here

我需要显示用户的“姓名”部分。我尝试使用CONVERT甚至JSON_VALUE,但Holistics均无法识别。

我使用了CAST,但是user_id仍然是数字形式。

这是我的代码:

enter image description here

这是数据输出:

enter image description here

您能帮我做什么才能显示销售人员的真实姓名吗?


我是这里的新手,这是我的第一篇文章,这就是为什么我所有的片段都以链接形式放置的原因。

1 个答案:

答案 0 :(得分:0)

要从JSON数据中选择特定字段(而JSON是user_id列中的内容),请尝试以下组合:

SELECT 
  JSON_UNQUOTE(JSON_EXTRACT(user_id,'$.id')) as id
  JSON_UNQUOTE(JSON_EXTRACT(user_id,'$.name')) as user_name
FROM public.deals

这应该从JSON列中返回用户的ID和名称。

无论使用哪种软件,它都可能期望以行列格式检索数据,因此您只需要处理SQL查询,以便它返回格式正确的数据。而且,由于在user_id列中有JSON(这看起来很奇怪,但是没关系),因此JSON_EXTRACT,JSON_UNQUOTE和CAST的组合应该可以解决问题。

但是请记住,使用这些方法在大表上运行DISTINCT可能会很慢。