用 2 列的多条记录构造一个字符串

2023-12-02

我准备了一个简单的SQL小提琴对于我的问题 -

在用 PostgreSQL 10.2 的 Pl/pgSQL 编写的文字游戏中,玩家的动作存储在表中:

CREATE TABLE words_scores (
        mid     bigint  NOT NULL REFERENCES words_moves ON DELETE CASCADE,
        gid     integer NOT NULL REFERENCES words_games ON DELETE CASCADE,
        uid     integer NOT NULL REFERENCES words_users ON DELETE CASCADE,
        word    text    NOT NULL CHECK(word ~ '^[A-Z]{2,}$'),
        score   integer NOT NULL CHECK(score >= 0)
);

这里填充了一些测试数据:

INSERT INTO words_scores (mid, gid, uid, word, score) VALUES
   (230, 209, 7, 'XY',  5),
   (230, 209, 7, 'XYZ', 15),
   (230, 209, 7, 'XAB', 13);

在存储函数中,我需要生成一个字符串,其中包含玩家在某个动作中所玩的所有单词。

这接近我所需要的并返回XY, XYZ, XAB:

SELECT STRING_AGG(word, ', ') FROM words_scores WHERE mid=230;

但是,我还需要将每个单词的分数放在括号中,每个单词后面如下所示:

XY (5), XYZ (15), XAB (13)

是否有一些巧妙的用途聚合函数有可能实现吗?


使用 FORMAT(如manual) 在聚合之前格式化字符串:

SELECT STRING_AGG(FORMAT('%s (%s)', word, score), ', ') FROM words_scores WHERE mid=230;

这是更新了 SQL Fiddle.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 2 列的多条记录构造一个字符串 的相关文章

随机推荐

  • Windows 8 Metro 风格应用程序中 .NET GeoCooperative.GetDistanceTo 的等效项

    Metro 风格 Windows 8 应用程序中的 System Device Location GeoCooperative GetDistanceTo 方法等效于什么 Metro 应用程序具有地理坐标类 带有小写的 C 但没有 GetD
  • 在 Typescript 中向现有模块添加定义

    我正在努力使用 Typescript 并修改现有模块的定义 我们习惯将任何想要输出的内容放入 res out 最后有类似 res json res out 的内容 这使我们能够在发送响应时对应用程序进行总体控制 所以我有这样的功能 expo
  • 如何在列表中的多个数据帧上使用 lapply 和粘贴

    我无法结合使用 lapply 和 Paste 来组合列表中包含的多个数据帧的两列 我查看了多个来源 但找不到答案 这个答案将粘贴应用于向量列表以获取字符串列表是关于组合列表中的行 而不是组合列来获得向量 这个答案解释了如何选择列但不将它们粘
  • 在 C 中使用 malloc 为 typedef 类型分配空间

    我不确定我到底需要用什么作为参数malloc来分配空间table allocate int 功能 我只是想count table cTable malloc sizeof count table 但这对 size 参数没有任何作用 我应该为
  • 基于 R 中的色相、饱和度、值来排序颜色

    这道题是R和色彩理论的结合 我尝试根据色相 h 饱和度 s 最后值 v 来排序颜色 这是本文末尾代码中的绘制颜色和数据框 Painted 数据框 1 2 3 4 5 h 0 6229508 0 2767296 0 1323283 0 979
  • iOS 版本特定的 info.plist 设置

    我正在更新 iOS 7 的应用程序 同时仍然支持 iOS 6 并且已更新状态栏以使用白色前景UIStatusBarStyle UIStatusBarStyleLightContent 但是 那UIStatusBarStyleLightCon
  • 混淆 ID

    我正在寻找一种将整数 ID 加密 混淆为另一个整数的方法 更准确地说 我需要一个函数int F int x 以便 xF x 是一一对应的 如果 x y F x F y 给定 F x 很容易找出 x 所以 F 不是哈希函数 给定 x 和 F
  • 如何设置 Azure CNAME

    我正在 Azure 上设置 VPS 但一直停留在配置 CNAME 上 该网站已向第三方注册 我已设置以下内容 NAME TYPE TTL VALUE NS 120 ns1 01 azure dns com etc SOA 3600 azur
  • Terraform - 在 Azure 上配置静态 IP 地址

    我已经使用 Terraform 一段时间了 并且对它与 VMware 和 Azure 提供商的使用感到满意 目前 我需要在 Azure 中使用静态 IP 地址配置 VM 试图说服他们摆脱静电 但有人对我使用了安全锤 我无法偏转 虽然我可以在
  • iPhone SDK 是否有可用的 GKVoiceChat 示例?

    我正在寻找 4 0 或更高版本的 iPhone SDK 的 GKVoiceChat 示例 它肯定会对我的 iPhone 游戏有所帮助 我见过两个游戏套件示例 其中包括 GKVoiceChat 在 Apple 开发者论坛中搜索 GCPing
  • 如何将 async/await 与使用基于事件的异步模式的库一起使用?

    我使用的库有一个名为 DoWork 的异步方法 该方法将在操作完成时引发 WorkDone 事件 我想编写一个调用该库的方法 但我希望我的方法是async所以可以用await 本质上 我想做的是 public async Task
  • 如何在Java Swing中实现空闲任务

    我有一个 GUI 应用程序变得非常慢 我想开始介绍各种 GUI 任务的计时 然而 我们的许多 GUI 操作会触发其他操作 然后 稍后调用 以触发其他操作 最终 一切都平静下来 没有什么可做的 此时 我想停止计时器并报告 GUI 操作 花费了
  • 如何签署 OKEx API 请求?

    在尝试向 OKEx API 进行身份验证时 我不断收到无效签名错误 但我无法理解为什么我的签名未通过 另一只眼睛可能有帮助吗 以下是 OKEx API 文档中的一些上下文 签名消息 OK ACCESS SIGN 标头的生成方式如下 创建一个
  • 检测英特尔 PIN 上的非法指令操作码

    我正在编写一个 Pin 工具 我想在其中检测具有特定操作码的指令 我有一个来自示例 C 程序的可执行文件 我正在其中打印 hello world 使用的体系结构是 x86 64 我在程序中跟踪了汇编指令 我将该程序的汇编指令跟踪提供给英特尔
  • jQuery $(this) 是否需要缓存

    我最近看到一些关于 jQuery 性能的博客文章 即http net tutsplus com tutorials javascript ajax 10 ways to instantly increase your jquery perf
  • 执行此命令的更类似于 Ruby 的方式是什么?

    我想这样做 sender email request user paypal email if request user paypal email email protected 所以基本上我只想在用户 paypal 电子邮件是时才执行命令
  • 推送 git 存储库失败并出现错误:包含“.git”

    我使用 hg fast export 工具将一些 Mercurial 存储库转换为 git 虽然所有这些存储库都转换得很好 但当我推送存储库时 其中一个生成了以下错误 git remote add origin email protecte
  • Google 跟踪代码管理器解析错误。主要表达

    我试图在 Google 跟踪代码管理器中保存此自定义 Javascript 变量 并每次都返回此错误 第 2 行第 4 个字符出错 解析错误 预期主要表达 var prodID function pID return document qu
  • 按顺序运行 Jenkins 并行任务

    我正在编写一个新的 Jenkins 管道 并且有一组我最终希望并行运行的步骤 但是 当我开发这个管道时 我想强制它按顺序运行 我没有看到任何方法来指定并行步骤使用的线程数或类似的内容 这是到目前为止的基本代码 node x stage cl
  • 用 2 列的多条记录构造一个字符串

    我准备了一个简单的SQL小提琴对于我的问题 在用 PostgreSQL 10 2 的 Pl pgSQL 编写的文字游戏中 玩家的动作存储在表中 CREATE TABLE words scores mid bigint NOT NULL RE