计算列组中的列数

Posted

技术标签:

【中文标题】计算列组中的列数【英文标题】:Count the number of columns in a column group 【发布时间】:2020-02-26 16:34:34 【问题描述】:

我需要报告每位工程师每月的平均客户访问次数。 我的 SQL 查询创建了一个包含开始日期和结束日期之间月份的临时表,并将其连接到主数据表,以确保即使在没有访问的月份也能返回行。

因此,从 SQL 返回的数据示例可能是:

我的报告有两个列组,一个代表年份,一个代表月份,我有一个工程师的行组。

对于此报告,日期始终返回为当月的第一天,即使实际访问可能在任何日期。

每年年底有一个单元格,其中包含 Count(Customer) 和总计工程师在该年进行的访问次数。我还想要一个单元格来显示当年每个月的平均访问次数。

对于一整年,我可以简单地除以 12。但是对于部分年份,我需要计算那一年的月份列数。

我尝试了 CountDistinct(Month) 但这仅计算至少有一次访问的月份,从而使每月平均值不正确。

如何,包括没有数据的列?

谢谢。

【问题讨论】:

【参考方案1】:

我这样做的方法是在您的临时日期表中添加一列,其中选择了月份数。

您可以通过计算临时表中的月份然后将值附加到其中来做到这一点,或者,如果日期表包含的不仅仅是月份,则根据您传入的参数计算出来。

例如

SELECT *, DATEFIFF("m", @startDate, @endDate) as NoOfMonths
    INTO #myTempDateTable
    FROM myDateTable
    WHERE etc...

然后在 s-s-rS 中,您只需将总数除以该数字即可。

【讨论】:

你好艾伦。感谢您的回复。这不完全是我所需要的,但我稍作修改以适应它,它工作正常。我按照您的建议添加了一个列,但是由于我按年份分组,该列包含每年的月数。然后,我可以将总访问次数除以这个数字,得到每月平均值。

以上是关于计算列组中的列数的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:按两列分组,将第一列组中的第一个值相加

如何计算 pyspark RDD 中的列数?

如何计算 Spark SQL(Databricks)中表中的列数?

将表中的列组合成 JSON 对象

查询以计算 Sql Server 视图中的列数

Informix:计算临时表中的列数?