用 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 列的多条记录构造一个字符串 的相关文章

  • 如何使用SpringBoot + JPA存储PostgreSQL jsonb?

    我正在开发一个迁移软件 该软件将消耗来自 REST 服务的未知数据 我已经考虑过使用 MongoDB 但我决定不使用它而使用 PostgreSQL 读完后this https blog codeship com unleash the po
  • Postgres 服务器性能在达到一定数量的记录后急剧下降

    我正在使用游标从大型 postgres 表中检索记录 4亿条记录 使用子表对数据进行分区 我的游标定义为 select from parent table order by indexed column 同时使用 JDBC 和 psql 前
  • postgresql 数据库在 OS X 上的位置?

    我确信这个问题已经得到解答 但我似乎找不到答案 我使用 Homebrew brew install postgresql 安装了 postgresql 它安装到 usr local Cellar postgresql 后记按照我这样做的说明
  • Laravel 5.3 Schema::create ENUM 字段是 VARCHAR

    我刚刚创建了新的迁移 运行后我看到了我的领域type 不是 ENUM 类型 它有一个改为 VARCHAR 255 类型 Schema create payments function Blueprint table table gt inc
  • 如何在 PostgreSql 的预订表中找到第一个空闲时间

    预订表包含预订开始日期 开始时间和持续时间 工作日的开始时间为工作时间 8 00 18 00 以半小时为增量 持续时间也以每天半小时为增量 CREATE TABLE reservation startdate date not null s
  • Oracle 中的函数与过程

    Oracle 中函数和过程的主要区别是什么 如果我可以用函数完成所有事情 为什么我必须使用过程 如果我无法在sql语句中调用过程 好吧 我会编写一个函数来完成相同的工作 过程不返回值 好的 在任何 dml 操作后我将仅返回 sql rowc
  • CREATE VIEW 指定的列名多于列

    如果我在 PostgreSQL 9 4 8 中运行以下语句 我会收到以下错误消息 CREATE VIEW 指定的列名多于列 但为什么 没有f1返回一个包含 5 列的表格 不应该v1也有 5 列吗 另外 如果我从第一个中删除演员阵容SELEC
  • 如何在postgresql中查找具有特定列的表

    我正在使用 PostgreSQL 9 1 我有一个表的列名 是否可以找到具有此列的表 如果是这样 怎么办 你也可以做 select table name from information schema columns where colum
  • 与 PostgreSQL CTE 的一般并行性

    我正在处理一些大数据 并且在查询中获取并行计划是必要的 我也很喜欢使用 CTE 来表达我的查询 但根据 PostgreSQL 的文档 我不太确定 CTE 是否对并行性造成严重限制 Here https www postgresql org
  • 执行 INSERT into 数据库后如何获取插入行的 id?

    我正在使用 c 11 和 pqxx 访问 postgresql 数据库 我需要插入行的 id 和标志 如果成功与否 执行 INSERT into 数据库后如何获取插入行的 id 我试图在网上找到例子但没有成功 work txn conn t
  • Postgres 简单的“数据透视表”

    如果我有一个这样的数据表 name type count test blue 6 test2 red 3 test red 4 我怎样才能查询它以获得一个表 name num red num blue test 4 6 test2 3 0
  • PostgreSQL:左外连接语法

    我正在使用 PostgreSQL 8 4 6 和 CentOS 5 5 并有一个用户表 select from pref users where id DE2 id first name last name female avatar ci
  • 没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。 -- Netbeans、Postgresql 8.4 和 Glassfish

    我正在尝试使用 EclipseLink 在 Glassfish 中使用 JPA 编辑 Postgresql 中的表 当我插入一个实体时 它运行良好 但是 当我尝试编辑或删除同一实体时 它失败并出现以下错误 任何想法 Caused by Ex
  • 如何使用PostGIS将多边形数据转换为线段

    我在 PostgreSQL PostGIS 中有一个多边形数据表 现在我需要将此多边形数据转换为其相应的线段 谁能告诉我如何使用 PostGIS 查询进行转换 提前致谢 一般来说 将多边形转换为线可能并不简单 因为没有一对一的映射 http
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • PESSIMISTIC_WRITE 是否锁定整个表?

    只是为了确保我正确理解事情是如何运作的 If I do em lock employee LockModeType PESSIMISTIC WRITE 它会仅阻止该实体吗 employee 或整个表Employees 如果重要的话 我正在谈
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • Postgres 中的输出 Inserted.id 等效项

    我是 PostgreSQL 新手 正在尝试将 mssql 脚本转换为 Postgres 对于合并语句 我们可以使用冲突更新插入或不执行任何操作 但我使用下面的语句 不确定这是否是正确的方法 MSSQL代码 Declare tab2 New
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p

随机推荐

  • 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