首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SUM如何与自动完成时间子句

SUM如何与自动完成时间子句
EN

Stack Overflow用户
提问于 2018-10-16 13:50:56
回答 1查看 54关注 0票数 0

我有一张桌子

代码语言:javascript
运行
复制
munic | origin  | date       | hour     | presence 
9875  | Germany | 2016-10-08 | 15:00:00 | 56
9875  | French  | 2016-10-08 | 18:00:00 | 24
9875  | Italians| 2016-10-08 | 18:00:00 | 6

使用SUM,我可以根据以下条件求和值:

代码语言:javascript
运行
复制
SELECT munic, 
       SUM(presence) FILTER (WHERE origin = 'Germany' AND date = '2016-10-08' AND hour = '15:00:00') AS "Germany_2016-10-08_15:00:00"

问题是,我必须对列中的值进行求和,但基于以下3个字段的条件太多(8天x8小时块x12 country = 768组合),太多的filter子句要用键盘编写。这样做的目的是为新闻表格中三个字段的每一个组合获得一个特定的总和。与编写每个过滤器子句不同,是否有一种基于一般规则自动选择组合的方法?

第二个问题是在新表中,如何用与和有关的三个字段的值连在一起来命名每个新列。

其结果可以是:

代码语言:javascript
运行
复制
   munic | Germany_2016-10-08_15:00:00 | French_2016-10-08_18:00:00 | Italians_2016-10-08_18:00:00
 9875    |    54                      |      24           |       6 
EN

回答 1

Stack Overflow用户

发布于 2018-10-16 15:07:14

首先,我将使用行而不是列来获取所有这些数据的求和和命名。您可以包括一个(可选的) where子句

代码语言:javascript
运行
复制
 SELECT munic, origin, date, hour, sum(presence) 
  from my_tab
  /*OPTIONAL where clause to limit to specific countries, origins, dates, hours*/
  WHERE origin in ('Germany','Italy','France',....)
   and date in ('2016-10-08','2016-10-09',...)
  group by munic, origin, date, hour

使用上面所写的查询,您将以行(而不是列)形式获得所需的数据。此外,在不存在数据的情况下,您将不会得到“空白”行。例子:如果“德国”2016年没有排-10-08 18:00,那么它就根本不存在了。如果需要这些数据,就必须想出一种方法来生成空行。一种方法是有一个简单返回每个国家名称的表、视图或子查询。然后,另一个返回每个时间段,另一个返回每个日期。然后,将外部连接到这些表中的每一个,这将有助于生成“空白行”。

此外,不用说,您的日期、时间或国家列表将来可能需要更改(例如:您现在运行的是'2016-10-08‘,但您可能希望下次运行此查询时需要其他日期,因此,另一个关注的问题是如何使该查询不必在每次运行“报告”时都需要大量编辑。

大部分的问题将由你来决定什么是最有意义的(我们是完全限制数据,还是仅仅得到所有的数据)。询问的日期是基于“开始日期”+X年,等等.)根据您提供的信息,很难说在这方面有什么帮助。

在完成了“以行格式获取数据”的初始过程之后,现在您必须执行“枢轴”操作,以将行切换到列.如前所述,这不是SQL本机或容易做到的事情。最简单的解决方案是使用非SQL解决方案使用应用程序代码将数据转换为数组、对象或其他形式。当然,这也可以使用pl/PGSQL或另一种DB语言来完成,或者可以(通过大量的努力)在SQL中进行改革,以返回您想要的格式的JSON数据。当然,您的应用程序仍然需要正确地解释JSON,这从逻辑上得出了这样的结论:如果您可以编写应用程序代码,那么您应该做最简单的事情.最简单的解决方案是在SQL中对数据进行“组/和”,然后循环遍历,然后用应用程序代码构建最终的数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52837083

复制
相关文章

相似问题

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