首页 > 解决方案 > SQL 使用列值作为查询计数结果中的列名

问题描述

我有一个表,其中包括tdatenode_name列等。

tdate                   node_name
2021-04-15 15:37:04.000 node1
2021-04-15 15:37:04.000 node2
2021-04-15 15:37:04.000 node1
2021-04-15 15:37:04.000 node3
2021-04-15 15:37:04.000 node1

我想绘制node_namegroup的实例计数tdate。所以做这样的事情

SELECT
date_trunc('minute',tdate),
node_name,
count(1)
GROUP BY 1,2

我明白了

_col0                    node_name      _col2
2021-04-15 15:37:00.000   node1           3
2021-04-15 15:37:00.000   node2           1
2021-04-15 15:37:00.000   node3           1

我想看到的是

_col0                   node1 node2 node3
2021-04-15 15:37:00.000 3     1     1 

我知道我会导致使用sum(node_name = 'node1') as 'node1'等,但问题是可能存在数百个唯一节点名称,具体取决于查询及其不可行的使用sum()count(case )语句。是否有某种方法可以在不明确包含每个 node_name 值的情况下对其进行概括?( sum(node_name) as node_name)?

标签: mysqldatabaseamazon-athena

解决方案


您可以使用histogram将返回具有相应计数的列映射的函数,请参阅此处的文档:https ://prestodb.io/docs/current/functions/aggregate.html


推荐阅读