【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结

2023-11-05

1. 源表结构:

order_id class count
111101100002 3 0
111101100012 1 3
11110112002 1 2
111101100202 2 0

2. 目标表结构:

根据order_id分组,根据不同的class进行统计

order_id count_1 count_2 count_3 count_4 count_5 count_6 count_7 count_8 count_9 count_10
111101100002 3 0 0 3 0 0 3 0 0 3 0 0 3 0

3. sql语句如下:

(1)分组统计,
(2)使用 COALESCE 返回第一个不为null的值,如果值为null,返回0

select order_id,
sum(COALESCE(cass class when 1 then count END,0)) as count_1,
sum(COALESCE(cass class when 2 then count END,0)) as count_2,
sum(COALESCE(cass class when 3 then count END,0)) as count_3,
sum(COALESCE(cass class when 4 then count END,0)) as count_4,
sum(COALESCE(cass class when 5 then count END,0)) as count_5,
sum(COALESCE(cass class when 6 then count END,0)) as count_6,
sum(COALESCE(cass class when 7 then count END,0)) as count_7,
sum(COALESCE(cass class when 8 then count END,0)) as count_8,
sum(COALESCE(cass class when 9 then count END,0)) as count_9,
sum(COALESCE(cass class when 10 then count END,0)) as count_10
from test_table group by order_id;

4. IF ELSE不太好用,可以用CASE WHEN THEN ELSE代替

比如 active_hour int 值分别为0~23
但是想要得到俩位的HH的小时值,需要把 0~9 转换为 00 ~ 09

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

【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结 的相关文章

  • 如何在Java中优雅地处理SIGKILL信号

    当程序收到终止信号时如何处理清理 例如 我连接到一个应用程序 希望任何第三方应用程序 我的应用程序 发送finish注销时的命令 发送该信息最好说什么finish当我的应用程序被破坏时的命令kill 9 编辑1 kill 9无法被捕获 谢谢
  • 项目缺少所需的注释处理库

    我的 Eclipse IDE 突然在问题视图中显示 xxxx 项目缺少所需的注释处理库 xxxx M2 REPO 中的一些旧 jar 我用谷歌搜索 没有找到任何答案 为什么我的项目使用旧的 jar 以及错误来自哪里 To remove th
  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • OpenNLP 与斯坦福 CoreNLP

    我一直在对这两个包进行一些比较 但不确定该往哪个方向走 我简单地寻找的是 命名实体识别 人 地点 组织等 性别识别 一个不错的训练 API 据我所知 OpenNLP 和斯坦福 CoreNLP 提供了非常相似的功能 然而 Stanford C
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • MongoDB java 驱动程序 3.0 在身份验证时无法捕获异常

    我超级卡住o 0 在尝试通过 Java 驱动程序进行身份验证时 存在捕获异常的问题 正如你可能会看到的Throwable类不工作 private MongoClient mongoClient private MongoDatabase m
  • 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

    有谁知道 freemarker 标签来检查 freemarker 文件中的 spring 安全角色和用户名 我从网络上的几个资源中发现以下代码将打印登录的用户名 但它没有打印用户名 而是打印 登录为
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • @Embeddable 中的 @GenerateValue

    我已将实体的 id 分离到一个单独的 Embeddable 类中 该实体如下 Entity Table name users public class Users EmbeddedId private Users pk id private
  • Android Google 地图无法在当前主题中找到样式“mapViewStyle”

    添加谷歌地图视图时 我扩展了MapView 使用xml编辑器将其添加到活动中 并将我的谷歌地图api密钥手动添加到布局xml文件中 我的权限在清单文件中允许互联网 我想知道的是 在 xml 编辑器中 我收到错误 无法在当前主题中找到样式 m

随机推荐

  • Qt的Graphics-View框架和OpenGL结合详解

    Qt的Graphics View框架和OpenGL结合详解 演示程序下载地址 这里 程序源代码下载地址 这里 这是一篇纯技术文 介绍了这一个月来我抽时间研究的成果 Qt中有一个非常炫的例子 Boxes 它展示了Qt能够让其Graphics
  • 微信小程序如何用setData修改data中的数据

    wx request url url data classid classid header content type application json success function res console log res data 打
  • java输入输出方式

    oj public class Main public static void main String args 主代码 Scanner读入 import java util Scanner public class Main public
  • MySQL——流程控制函数

    在 MySQL 中 流程控制函数是指可以控制存储过程 stored procedure 或函数 function 中执行流程的语句 以下是几个常用的流程控制函数 1 IF函数 实现IF ELSE 的效果 如果expr1为true 则返回ex
  • arduino控制42步进电机——先动起来

    前言 好久之前就想分享出来 现在有点晚了 不过还是想简单的分享一下 在学校里一次做创新项目的机会 让我认识了步进电机 当时老师让我们用PLC发出脉冲的方式让步进电机动起来 可是我刚拿到步进电机时以为会像小马达一样 给正负直流电源就会跑 但是
  • c语言试卷自动批改系统.c

    一 题目要求 c语言试卷自动批改系统 1 answer txt为题目的答案文件 2 学生的答题信息用文件保存 即学号 txt 里面的内容为学生的答案 3 根据学号 txt与answer txt来判断学生答案是否正确来获取学生分数 每题五分
  • 火爆!用GPT接入midjounery绘图

    先看效果图吧 画了一只狗 gpt next web这个项目接入mj绘图 需要登录进入midjounery api网站后 复制一下api token key 3 网上找下GPT Next这个项目 建议电脑 手机有时候不显示图片 按照下方图示
  • 软件质量模型的六大特性和27个子特性

    软件质量模型的六大特性和27个子特性如下 ISO IEC9123软件质量特性 图示 一 功能性 1 适合性 解释软件产品是否提供了相应的功能 2 准确性 软件提供的功能是否正确 用户需要的 即解释软件对不对 3 互操作性 产品与产品之间交互
  • SQL优化(二):根据工具来SQL优化

    前一章节 讲的是explain的使用以及他结果的解析 实际上工具远远不止explain一个 还有慢查询 SHOW PROFILE这些 而且光读工具的说明书也不行 还要实际的根据工具返回的结果找到原因 根据实际情况是物理宿主机配置太低了要升级
  • Netty4详解三:Netty架构设计

    读完这一章 我们基本上可以了解到Netty所有重要的组件 对Netty有一个全面的认识 这对下一步深入学习Netty是十分重要的 而学完这一章 我们其实已经可以用Netty解决一些常规的问题了 一 先纵览一下Netty 看看Netty都有哪
  • 关于linux内核学习的误区以及相关书籍介绍

    第一篇 先说句正经的 其实我没资格写这篇文章 因为自己也就一两个月以来才开始有所领悟的 因此 这里与其说是关于linux内核学习的经验 不如说是自己的教训吧 希望不要扔鸡蛋砸我 常常有人问 我想学习内核 需要什么基础吗 linus torv
  • uni微信小程序,打开地图,跳转第三方

    一 需求 微信小程序 需要点击并跳转第三方地图软件导航 并计算到目标位置距离 二 思路 思路 1 接口返回需要有位置的经纬度 这个自行在后台编辑获取 2 需要获取用户的位置权限 我这边使用的是uniapp 需要使用官方封装两个接口 主要是用
  • 华为OD机试2023 最新最全备考攻略助你轻松上岸

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 什么是华为OD 华为OD是Outsourcing Dispacth模式 是华为和外企德科联合
  • ubuntu系统火狐浏览器上网解决方法

    打开终端 sudo apt get update sudo apt get install firefox
  • VSCode本地代码同步服务器教程(已解决本地同步删除服务器端)

    1 安装插件 SFTP 2 1 在本地新建一个文件夹用来放项目 并且用vscode打开这个文件夹然后进行后续操作 2 2 在VSCode中打开命令栏 快捷键Shift Ctrl P 搜索SFTP 然后选择自己刚才创建的文件夹 3 选择SFT
  • 虚拟机和主机文件共享的四种方法

    第一种方法 使用虚拟机自带的共享功能 1 在vmware里VM gt 设置 gt options选项卡 gt shared folder 添加共享文件 具体如下图所示 2 然后到 mnt hgfs下可以找到共享的文件了 cd mnt hgf
  • 一些计算机词汇的简单解说

    fork zombie unix 中有个系统调用 叫做 fork 这个名字起得很有意思 两个fork 叉子 本来放在一起 跟着左右手各拿起一只 含着一分为二的意思 unix 中 fork 的作用就是创建了一个新的进程 和原来的进程是一模一样
  • java的基础知识-第四十篇-java中 =与==、&与&&、

    与 属于赋值运算符 将右侧的值赋给左侧的变量名称 属于关系运算符 判断左右两边的值是否相等 结果为boolear类型 与 是逻辑与 是短路与 都属于逻辑运算符 都表示并且执行结果都相同 当使用短路与 并且第一个条件为false时 则结果直接
  • linux系统时钟使用utc,linux时钟概念CST与UTC、以及NTP简单设置

    1 世界协调时间 Universal Time Coordinated UTC GPS 系统中有两种时间区分 一为UTC 另一为LT 地方时 两者的区别为时区不同 UTC就是0时区的时间 地方时为本地时间 如北京为早上八点 东八区 UTC时
  • 【PostgreSQL】行变列、非空(CASE WHEN、COALESCE)语句总结

    1 源表结构 order id class count 111101100002 3 0 111101100012 1 3 11110112002 1 2 111101100202 2 0 2 目标表结构 根据order id分组 根据不同