mysql - 选择所有数据库中列的总和
问题描述
我想查看我所有数据库中的订单总和,以获得一些见解。现在我有一个正确列出 database_name 和 table 的查询。
SELECT table_schema AS database_name, table_name
FROM information_schema.tables
WHERE table_name = "shopping_carts";
我想要的是某种查询,我会在其中做这样的事情。
SELECT table_schema as database_name, SUM(shopping_carts.sub_total)........
如何查询这样的事情?
编辑:我想看到的是:
l database_name l SUM(column_name) l
| database_name1 | 114728 | ##sum of database_name1.shopping_carts.column_name
| database_name2 | 252154 | ##sum of database_name2.shopping_carts.column_name
| database_name4 | 48156 | ## etc.
| database_name5 | 18448 | ## etc.
解决方案
我建议您使用单个表shopping_charts
,在其中添加一个名为的列,例如database_name
. 这将使查询更容易编写和维护,并得到适当的优化。
虽然不是最优的,但您可以使用动态查询来解决您的问题,例如,此查询将返回您必须在每个数据库上执行的选择列表:
select
concat(
'select ''', table_schema, ''' AS database_name,'
'sum(sub_total)',
' from ', table_schema, '.shopping_charts'
)
from
information_schema.tables
where
table_name = "shopping_carts"
那么您可以使用 group_concat 来获取单个 sql 语句:
select group_concat(sql_single_db separator ' union all ') as sql_all_db
from (
select
concat(
'select ''', table_schema, ''' AS database_name,'
'sum(sub_total)',
' from ', table_schema, '.shopping_charts'
) sql_single_db
from
information_schema.tables
where
table_name = "shopping_charts"
) s into @sql_all_db;
您可以使用以下命令执行:
prepare stmt1 from @sql_all_db;
execute stmt1;
deallocate prepare stmt1;
推荐阅读
- awk - 使用 AWK 进行文本操作
- struct - 如何在 Julia 中为可变结构设置默认参数?
- c - 使用 malloc 初始化结构
- javascript - 带有 Jest 错误的 Vue 组件测试,TypeError:无法读取未定义的属性“名称”
- git - git 命令(或简单脚本)获取文件的之前(旧)和之后(新)副本
- sql-server - SQL Server:备份位置
- r - 如何在 Hmisc: rcorr 中计算渐近 p 值?
- sql - 计算 SQL 中值转换之间的行数
- r - 如何将 emmeans 误差条添加到 geom_bar
- python - 如何使用 Python 创建 PNG 模板