首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询帮助-子查询/嵌入查询

SQL查询帮助-子查询/嵌入查询
EN

Stack Overflow用户
提问于 2012-04-21 02:32:15
回答 1查看 127关注 0票数 0

我刚开始在工作中学习SQL,但是我在子查询方面遇到了麻烦。我希望不仅仅是一个查询,而是一个如何创建子查询的解释。

当前SQL查询

代码语言:javascript
运行
复制
SELECT to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT, LATENCY 
FROM latency ORDER BY P_DT

返回

代码语言:javascript
运行
复制
to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT, LATENCY
2012-04-20 03:42:00     83659   1m
2012-04-20 03:42:00 70305   2m
2012-04-20 03:42:00 105194  4m
2012-04-20 03:43:00 70277   1m
2012-04-20 03:43:00 0   2m
2012-04-20 03:43:00 0   4m

我需要的是

代码语言:javascript
运行
复制
to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), COUNT.LATENCY='1m', COUNT.LATENCY='2m', COUNT.LATENCY='4m'
2012-04-20 03:42:00 83659       70305      105194
2012-04-20 03:43:00 70227       0          0

谢谢

数据库有3列: Timestamp、Count、Latency Type

代码语言:javascript
运行
复制
Tmestamp = progressive timestamp for each min
Count = count, just a number
Latency Type = 1m, 2m or 4m

每个时间戳都有1m、2m和4m延迟,但这些都是不同的行。

我需要返回一行时间戳,计数为1m在时间戳,计数为2m在时间戳,计数为4m在时间戳

我不能将数据库更改为count1m列、count2m列等。

另一种看待它的方式是将这三个查询合并为一个查询

代码语言:javascript
运行
复制
SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'1m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\')

SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'2m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\')

SELECT to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\'), COUNT 
FROM LATENCY 
WHERE SOURCE_ID=\'2\' AND LATENCY = \'4m\' 
GROUP BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\') 
ORDER BY to_char(P_DT, \'yyyy-mm-dd HH:mi:ss\')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-21 02:39:31

如果我没理解错的话,应该是这样的:

代码语言:javascript
运行
复制
SELECT  to_char(P_DT, 'yyyy-mm-dd HH:mi:ss'), 
        SUM(CASE WHEN LATENCY = '1m' THEN COUNT ELSE 0 END) AS LATENCY1m, 
        SUM(CASE WHEN LATENCY = '2m' THEN COUNT ELSE 0 END) AS LATENCY2m, 
        SUM(CASE WHEN LATENCY = '4m' THEN COUNT ELSE 0 END) AS LATENCY4m
FROM latency 
GROUP BY to_char(P_DT, 'yyyy-mm-dd HH:mi:ss')
ORDER BY to_char(P_DT, 'yyyy-mm-dd HH:mi:ss')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10251609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档