首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用联合all语句时,如何避免多次连接?

在使用联合all语句时,如何避免多次连接?
EN

Stack Overflow用户
提问于 2017-10-21 06:34:40
回答 1查看 24关注 0票数 0

我正在处理一个查询,我找到了一个点:

代码语言:javascript
复制
SELECT tpd.timestamp::Date,'Mon' AS Label,
       count(tpd.aggregated)
FROM tap.deving AS tpd INNER JOIN
  (select DATE_TRUNC('week', timestamp),  MAX(timestamp) AS max_timestamp
   from tap.deving
   group by DATE_TRUNC('week', timestamp)
  ) b
on tpd.timestamp = b.max_timestamp 
left JOIN ca.hardware AS ch ON tpd.dev = ch.name
left JOIN ca.sites AS css ON css.id = ch.id
WHERE (tpd.aggregated=TRUE)
  AND (css.country='USA') and (tpd.timestamp::date=now()::Date - interval '1 day') group by tpd.timestamp
UNION ALL
SELECT tpd.timestamp::date,'Tap but not' AS Label,
       count(tpd.tap)
FROM tap.deving AS tpd INNER JOIN
  (select DATE_TRUNC('week', timestamp),  MAX(timestamp) AS max_timestamp
   from tap.deving
   group by DATE_TRUNC('week', timestamp)
  ) b
on tpd.timestamp = b.max_timestamp 
left JOIN ca.hardware AS ch ON tpd.dev = ch.name
left JOIN ca.sites AS css ON css.id = ch.id
WHERE (tpd.tap=true)
  AND (tpd.aggregated=false) and (tpd.needs_to_be=true)
  AND (css.country='USA')  and (tpd.timestamp::date=now()::Date - interval '1 day') group by tpd.timestamp

我在许多SO帖子的帮助下写了这个查询,它变得相当混乱和超级慢。我不知道如何优化这个查询。

EN

回答 1

Stack Overflow用户

发布于 2017-10-21 06:43:51

您可以尝试这个查询吗?

代码语言:javascript
复制
 SELECT tpd.timestamp::Date,CASE tpd.aggregated
      WHEN false THEN 'Tap but not'
      WHEN true THEN 'Mon' as Label,
       count(tpd.aggregated)
FROM tap.deving AS tpd INNER JOIN
  (select DATE_TRUNC('week', timestamp),  MAX(timestamp) AS max_timestamp
   from tap.deving
   group by DATE_TRUNC('week', timestamp)
  ) b
on tpd.timestamp = b.max_timestamp 
left JOIN ca.hardware AS ch ON tpd.dev = ch.name
left JOIN ca.sites AS css ON css.id = ch.id
WHERE ((tpd.aggregated=TRUE)  or ((tpd.tap=true)  AND (tpd.aggregated=false) and (tpd.needs_to_be=true)))
  AND (css.country='USA') and (tpd.timestamp::date=now()::Date - interval '1 day') group by tpd.timestamp;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46858223

复制
相关文章

相似问题

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