仅使用最小 COUNT() 转置行和列(也称为枢轴)?

2023-11-26

这是我的表“tab_test”:

year    animal  price
2000    kittens 79
2000    kittens 93
2000    kittens 100
2000    puppies 15
2000    puppies 32
2001    kittens 31
2001    kittens 17
2001    puppies 65
2001    puppies 48
2002    kittens 84
2002    kittens 86
2002    puppies 15
2002    puppies 95
2003    kittens 62
2003    kittens 24
2003    puppies 36
2003    puppies 41
2004    kittens 65
2004    kittens 85
2004    puppies 58
2004    puppies 95
2005    kittens 45
2005    kittens 25
2005    puppies 15
2005    puppies 35
2006    kittens 50
2006    kittens 80
2006    puppies 95
2006    puppies 49
2007    kittens 40
2007    kittens 19
2007    puppies 81
2007    puppies 38
2008    kittens 37
2008    kittens 51
2008    puppies 29
2008    puppies 72
2009    kittens 84
2009    kittens 26
2009    puppies 49
2009    puppies 34
2010    kittens 75
2010    kittens 96
2010    puppies 18
2010    puppies 26
2011    kittens 35
2011    kittens 21
2011    puppies 90
2011    puppies 18
2012    kittens 12
2012    kittens 23
2012    puppies 74
2012    puppies 79

下面是一些转置行和列的代码,以便我得到“小猫”和“小狗”的平均值:

SELECT
    year,
    AVG(CASE WHEN animal = 'kittens' THEN price END) AS "kittens",
    AVG(CASE WHEN animal = 'puppies' THEN price END) AS "puppies"
FROM tab_test
GROUP BY year
ORDER BY year;

上面代码的输出是:

    year    kittens puppies
    2000    90.6666666666667    23.5
    2001    24.0    56.5
    2002    85.0    55.0
    2003    43.0    38.5
    2004    75.0    76.5
    2005    35.0    25.0
    2006    65.0    72.0
    2007    29.5    59.5
    2008    44.0    50.5
    2009    55.0    41.5
    2010    85.5    22.0
    2011    28.0    54.0
    2012    17.5    76.5

我想要的是一个像第二个表一样的表,但它只包含具有COUNT()第一个表中至少有 3 个。换句话说,目标是this作为输出:

year    kittens
2000    90.6666666666667

第一个表中至少有 3 个“kitten”实例。
这在 PostgreSQL 中可能吗?


CASE

如果您的案例如演示的那样简单,CASE声明会做:

SELECT year
     , sum(CASE WHEN animal = 'kittens' THEN price END) AS kittens
     , sum(CASE WHEN animal = 'puppies' THEN price END) AS puppies
FROM  (
   SELECT year, animal, avg(price) AS price
   FROM   tab_test
   GROUP  BY year, animal
   HAVING count(*) > 2
   ) t
GROUP  BY year
ORDER  BY year;

不管你是否使用sum(), max() or min()作为外部查询中的聚合函数。在这种情况下,它们都产生相同的值。

SQL小提琴

crosstab()

有了更多的类别,就会更简单crosstab()询问。这也应该是更大的桌子更快.

您需要安装附加模块表函数(每个数据库一次)。从 Postgres 9.1 开始,这很简单:

CREATE EXTENSION tablefunc;

此相关答案中的详细信息:

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

仅使用最小 COUNT() 转置行和列(也称为枢轴)? 的相关文章

  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 从 call_log 中获取最大并发通话数

    我需要帮助在 MySQL 5 0 77 中编写一个查询 根据下面所示的数据 办公室一天的通话量 返回并发电话呼叫的峰值数量 我只是想知道一天中任何特定时间同时打电话的人数最多是多少 首先 这是 MySQL 表 CREATE TABLE ca
  • PostgreSQL 错误 42501:架构权限被拒绝

    我正在 ASP NET 中构建一个用户注册系统 使用 PostgreSQL 数据库来维护用户信息 作为注册过程的一部分 用户会收到一条确认消息 他们必须单击其中的链接来验证其电子邮件地址 然后 他们将进入一个可以创建密码的页面 一旦用户提供
  • ALTER TABLE 语句与 FOREIGN KEY 约束冲突

    为什么要添加外键tblDomare表导致此错误 ALTER TABLE 语句与 FOREIGN KEY 约束 FK tblDomare PersN 5F7E2DAC 冲突 冲突发生在数据库 almu0004 表 dbo tblBana 列
  • SQL:如何从一个表中获取另一个表中每一行的随机行数

    我有两个数据不相关的表 对于表 A 中的每一行 我想要例如表 B 中的 3 个随机行 使用光标这相当容易 但速度非常慢 那么我该如何用单个语句来表达这一点以避免 RBAR 呢 要获得 0 到 N 1 之间的随机数 可以使用 abs chec
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • MySQL NOT IN 来自同一个表中的另一列

    我想运行 mysql 查询来选择表中的所有行films其中的值title该列不存在于另一列的所有值中的任何位置 collection 这是我的表格的简化版本 其中包含内容 mysql gt select from films id titl
  • 如何确定层级组织中的权限?

    我正在尝试创建高性能逻辑来确定分层组织内的权限 员工被分配到一个或多个单位 单元是分层的 理论上 无限深度 实际上不超过 6 层 例如 员工Jane可能是Supervisor of the Accounts Receivable单元 的子单
  • pg_restore错误:角色XXX不存在

    尝试将数据库从一个系统复制到另一个系统 涉及的版本是9 5 0 源 和9 5 2 目标 源数据库名称是foodb与主人pgdba并且目标数据库名称将被命名foodb dev与主人pgdev 所有命令都在将托管副本的目标系统上运行 The p
  • 如何将今天的日期返回到 Oracle 中的变量

    我想做这个 DECLARE today as smalldatetime SELECT today GetDate 但我需要一个oracle翻译 甲骨文使用SYSDATE 还有 ANSI 标准CURRENT TIMESTAMP 除其他外 S
  • 使用 DISTINCT 进行查询需要很长时间

    我正在使用 Microsoft Access 2003 我的项目中的一个表单需要很长时间才能向用户显示 这是适用的查询 SELECT DISTINCT tb KonzeptDaten DFCC tb KonzeptDaten OBD Cod
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是

随机推荐

  • Android GridView 多选

    我已经实现了 GridView 并激活了 mGridView setChoiceMode GridView CHOICE MODE MULTIPLE MODAL 模式 现在 当我长按一个项目时 我可以从网格中选择多个项目 我想通过正常的短暂
  • 使用数据存储防止内存泄漏的最佳实践是什么?

    我尝试使用数据存储首选项 alpha07 来存储和获取数据 一切正常 我在数据存储中遇到了一些内存泄漏问题 使用数据存储防止内存泄漏的最佳实践是什么 这是我的示例代码 Preferences DataStore implementation
  • 如何从 Wildfly (Jboss) 访问 ws 端点的 CXF jar

    我尝试在 Wildfly 8 2 中部署我的 war 文件 我的应用程序使用 org apache cxf 进行 Web 服务 但 Wildfly Jboss 默认带有自己的 cxf jar 可以提供完整的 Java EE 支持 我可以消除
  • 使用 Flask-SQLAlchemy 反射表会引发 RuntimeError:应用程序未注册

    我有一个 SQLite 数据库来管理用户登录 还有一个现有的 MySQL 数据库 我将 MySQL 数据库添加到 Flask SQLAlchemySQLALCHEMY BINDS配置 当我尝试反映表格时 出现以下错误 RuntimeErro
  • R 中的多面板标题

    我有一个关于 R 的超简短问题 我的目标是为使用 par 生成的多面板图分配一个通用标题 例如 par mfrow c 1 2 plot rnorm 1000 plot rnorm 1000 因此 类似于绘图函数的 main 但扩展到两个绘
  • 使用多列的 Pandas DataFrame 聚合函数

    有没有办法编写一个聚合函数 如DataFrame agg方法 该方法可以访问正在聚合的多列数据 典型的用例是加权平均值 加权标准差函数 我希望能够写出类似的东西 def wAvg c w return c w sum w sum df Da
  • 如何避免此结构定义中出现 PhantomData?

    我有一个看起来像这样的特征 trait Handler
  • 使用 Google C++ Mocking Framework (Google Mock) (V1.5) 将任意参数传递给调用的方法

    我有一个模拟方法 当它被调用时 我希望它在调用其正常行为之前调用另一个函数 就像是 EXPECT CALL my obj MockedMethod WillOnce DoAll Invoke my obj SomeAdditionalMet
  • 你能在Python中创建多个“if”条件吗? [复制]

    这个问题在这里已经有答案了 在 JavaScript 中 可以这样做 if integer gt 3 integer lt 34 document write Something 这在Python中可能吗 Python确实允许你做这样的事情
  • 如何删除伪元素上的下划线?

    在 Chrome 和 Firefox 上 如果我在标签上应用 text decoration underline 默认情况下下划线不适用于伪元素 但在 IE 上确实如此 而且我无法删除它 我希望链接带有下划线 但不是伪元素 如果我在里面添加
  • 一个类的对象(使用单/多重继承)有多少个vptr?

    对于一个其 clas child 具有单一继承且基类多重继承 base1 和 base2 的对象 通常需要多少个 vptr 如果一个对象具有单继承和多继承 那么识别它有多少 vptr 的策略是什么 虽然标准没有指定有关 vptr 的内容 但
  • 如何使用 kubernetes Ingress 执行自定义身份验证

    我在 kubernetes 中部署了一些服务 并使用 NGINX 入口访问外部 使用 EC2 实例进行所有集群设置 能够通过与入口绑定的主机访问服务 现在 我不再直接访问 svc 而是尝试在访问服务之前添加身份验证 并重定向到登录页面 用户
  • 仅通过 URL 提交网络表单?

    我不太确定这属于这里 所以不要投反对票 只是让我知道是否是这样 我会很快继续前进 无论如何 有一个website有一个搜索页面 当点击搜索按钮时 它不会在 URL 中包含搜索查询 搜索内容后 页面会重定向到ssearch asp 但正如所说
  • 将 3 元素元组列表转换为字典

    如果我有两个元组列表 tuple2list 4 21 5 10 3 8 6 7 tuple3list 4 180 21 5 90 10 3 270 8 6 0 7 我如何将其转换为字典 如下所示 tuple2list2dict 4 21 5
  • 当 Oreo 中的服务被销毁时,防止通知被驳回

    好的 我有一个关于在 Android Oreo 中保留媒体播放器服务的问题 基于这里的讨论 Android Oreo 保持已启动的后台服务处于活动状态而不将其设置为前台 但有通知 在 Android Oreo 中处理媒体播放器服务的正确方法
  • 如何使用 EF 6.1 Fluent API 创建空间索引

    嗯 问题已经很清楚了 是否可以创建空间索引使用实体框架 6 1 流畅的 API 我知道做到这一点的唯一方法是通过 自定义 迁移 在 EF6 中 我添加了一个迁移 在下面的示例中 它被命名为 V1 从而生成一个具有空 Up 和 Down 方法
  • 带有 FCM 令牌的 Firebase 通知显示已发送但未收到

    我正在尝试使用 FCM 令牌从 firebase 通知控制台向特定设备发送简单的推送通知 firebase 通知控制台显示已发送的通知 但设备未收到该通知 我尝试发送通知 然后等待查看控制台是否从didReceiveRemoteNotifi
  • Google Places API:地点详细信息仅限 5 条评论

    https developers google com places documentation PlaceDetails 评论 输出列表显然仅限于前 5 条评论 文档中根本没有提到这一点 有没有办法获得分页结果或超过 5 个 文档中明确说
  • 如何在pytorch中查找内置函数源码

    我正在尝试对批量归一化进行研究 并且不得不对 pytorch BN 代码进行一些修改 我深入研究了 pytorch 代码并陷入困境torch nn functional batch norm 其中引用torch batch norm 问题是
  • 仅使用最小 COUNT() 转置行和列(也称为枢轴)?

    这是我的表 tab test year animal price 2000 kittens 79 2000 kittens 93 2000 kittens 100 2000 puppies 15 2000 puppies 32 2001 k