【问题标题】:Return number of tickets created per week with SQL query使用 SQL 查询返回每周创建的票数
【发布时间】:2011-03-08 18:19:11
【问题描述】:

我有一个工单表 common_ticket,其中有一个名为 creation_date 的列,其中包含创建日期。

我想计算过去几个月每周创建的票证数量。我无法编写 SQL 查询来返回此类信息。只要每个单独的星期都有一个不同的数字,它如何返回并不重要。

有人对如何做到这一点有任何想法吗?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    类似:

    选择提取(从创建日期开始的星期), 提取(从创建日期开始的年份), 数数(*) 来自门票 GROUP BY 提取(从创建日期开始的一周), 提取(从创建日期开始的年份)

    【讨论】:

      【解决方案2】:

      应该这样做:

      SELECT [t1].[value] AS [Year], [t1].[value2] AS [Week], COUNT(*) AS [Count]
      FROM (
          SELECT DATEPART(Year, [t0].[creation_date]) AS [value],
              DATEPART(Week, [t0].[creation_date]) AS [value2]
          FROM [common_ticket] AS [t0]
      ) AS [t1]
      GROUP BY [t1].[value], [t1].[value2];
      

      【讨论】:

      • -1,用于非法 PostgreSQL 语法(或任何其他符合标准的 DBMS)
      • 来吧“马”,这是完全合法的 TSQL 2008
      • 是的,但问题是用 PostgreSQL 标记的,因此您的解决方案不适用于 OP(顺便说一句:您的查询中绝对不需要可怕的括号)
      • true,可能对 OP 没有 100% 的帮助,但其他搜索“sql”标签的人不会都在寻找 PostgreSQL;就括号而言,我不同意它们“绝对”不必要,它们可以防止列名中出现关键字或特殊字符,因此我更喜欢使用它们以保持一致性;对不起,如果那些冒犯了你
      • 如果这是您的编码约定,这对我来说很好。但我个人的规则是一定要避免引用(括号或标准双引号)。使用需要引用的列名或表名只会解决问题。这些括号使 SQL 绝对不可移植(如果我没记错的话,SQL Server 也接受标准引用)。特别是如果您的目标是搜索“sql”的其他用户,您应该尝试编写可移植的 SQL - 不是 Microsoft 特定的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2020-10-31
      相关资源
      最近更新 更多