sql - 从 SQL 中的每一列中减去聚合函数
问题描述
我正在尝试为 SQL 表的每一列组合相应列中的聚合函数。例如,如果我想减去每列的平均值,我可以用每列的子查询来做
SELECT
col1 - (SELECT AVG(col1) FROM table),
col2 - (SELECT AVG(col2) FROM table),
col3 - (SELECT AVG(col3) FROM table)
FROM table;
但是,如果表中有很多列,这很麻烦,并且需要一一写出列名。有没有办法简化代码,或者使用别名使其更清晰?
解决方案
使用窗口函数:
SELECT col1 - AVG(col1) OVER (),
col2 - AVG(col2) OVER (),
col3 - AVG(col3) OVER ()
FROM table;
推荐阅读
- python-3.x - 找到一个数字后跟一个空格并拆分字符串
- python - 在 python 中迭代列表和添加熊猫数据框列非常慢
- node.js - 错误 [ERR_REQUIRE_ESM]: 必须使用 import 在 express 中加载 ES 模块
- node.js - 在 NodeJS 上安装 sqlite3@5.0.2 时遇到问题
- python - 如何向多线程函数发出信号,它可以停止?
- node.js - 从swift调用时如何将参数传递给https函数?
- r - 获取每列中的累积行数,不包括 R 中的 NA
- legacy-app - 如何把一个现代化工程搞得一团糟?
- python - Python - 将列的值从 DataFrame 转换为不同的列
- python - Azure 网站 Kudu REST API - Python 中的身份验证