【问题标题】:Select activity from a specific date using SQL使用 SQL 从特定日期选择活动
【发布时间】:2019-08-22 17:55:21
【问题描述】:

我想在 Stack Overflow 问答数据集上查找特定日期内提出的问题数量。 2018-11-11问了多少问题?

how = """SELECT
  EXTRACT(DAY FROM DATE '2018-11-11') AS Day,
  EXTRACT(MONTH FROM DATE '2018-11-11') AS Month,
  EXTRACT(YEAR FROM DATE '2018-11-11') AS Year,
  COUNT(*) AS Number_of_Questions,
  ROUND(100 * SUM(IF(answer_count > 0, 1, 0)) / COUNT(*), 1) AS Percent_Questions_with_Answers
FROM
  `bigquery-public-data.stackoverflow.posts_questions`
GROUP BY
  Day
HAVING
  Day > 0 AND day < 12
ORDER BY
  Day;

    """


how = stackOverflow.query_to_pandas_safe(how)
how.head(12)

我使用的代码检索整个数据集中提出的所有问题,而不是在我选择的日期。如果我尝试使用 @@ 过滤,我会收到错误

【问题讨论】:

    标签: python sql filter google-bigquery jupyter-notebook


    【解决方案1】:

    以下是 BigQuery 标准 SQL

    #standardSQL
    SELECT
      DATE(creation_date) AS day,
      COUNT(*) AS Number_of_Questions,
      ROUND(100 * COUNTIF(answer_count > 0) / COUNT(*), 1) AS Percent_Questions_with_Answers
    FROM `bigquery-public-data.stackoverflow.posts_questions` 
    WHERE DATE(creation_date) BETWEEN '2018-11-01' AND '2018-11-11'
    GROUP BY day
    -- ORDER BY day
    

    结果

    【讨论】:

      【解决方案2】:

      查询不会是这样的吗?

      SELECT COUNT(*) AS Number_of_Questions
      FROM `bigquery-public-data.stackoverflow.posts_questions`
      WHERE DATE = DATE('2018-11-11');
      

      编辑:

      我看到这是一个公共数据集。假设您的意思是创建日期,那么:

      SELECT count(*)
      FROM `bigquery-public-data.stackoverflow.posts_questions` pq
      WHERE creation_date >= TIMESTAMP('2018-11-11') and
            creation_date < TIMESTAMP('2018-11-12') ;
      

      此代码经过测试,在我运行时可以运行。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-09
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2017-06-16
      • 2018-05-21
      • 2018-10-08
      相关资源
      最近更新 更多