【问题标题】:SQL. BigQuery. DATE_DIFF A in BSQL。大查询。 B 中的 DATE_DIFF A
【发布时间】:2022-01-19 00:22:40
【问题描述】:

我有桌子

CREATE TABLE tests.segments (`date` date, ClientID STRING(6), SegmentID int)

有数据

INSERT tests.segments VALUES ('2018-01-31' ,'A11111', 2), ('2018-02-28' ,'A11111', 2), ('2018-03-31' ,'A11111', 1), ('2018-04-30' ,'A11111', 1), ('2017-11-30' ,'B22222', 1), ('2017-10-31' ,'B22222', 1), ('2017-09-30' ,'B22222', 3), ('2017-09-30' ,'C33333', 1), ('2017-10-31' ,'C33333', 1)

我需要为 SegmentID 中的每个 ClientID 选择 DATE_DIFF 我知道如何为 ClientID 或 SegmentID 单独选择它

SELECT SegmentID, DATE_DIFF(DATE(MIN(date)), DATE(MAX(date)), DAY) as days_diff
FROM tests.segments
GROUP BY SegmentID

以及如何在没有 SQL 的情况下做到这一点 :) 请帮忙。

【问题讨论】:

  • 你能给出这个输入表的示例输出吗?这样更容易理解。我可以帮你写查询
  • 你能澄清一下“如何在没有 SQL 的情况下做到这一点”是什么意思吗?您是否正在寻找使用 Python Pandas 等的解决方案?同时提供预期输出的示例将非常有帮助。
  • @Regressor,谢谢!大声笑,这很简单,我工作过度了:D
  • @RiccoD,我的意思是,我知道如何用 R 解决它,但不知道如何用 SQL 来解决。感谢您的参与!

标签: sql google-bigquery datediff


【解决方案1】:

我不确定你是否正在寻找这个

但这里是使用 group by 子句中的 clientId 实现的查询。让我知道这是否是预期的输出。

SELECT SegmentID, clientid, DATE_DIFF(DATE(MIN(date)), DATE(MAX(date)), DAY) as days_diff
FROM tests.segments
GROUP BY SegmentID, clientid
order by SegmentID, clientid

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多