Выберите активность с определенной даты, используя SQL - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу посмотреть количество вопросов, заданных за конкретный день, в наборе вопросов о переполнении стека и ответах. Сколько вопросов было задано в 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)

Код, который я использую, возвращает все вопросы, заданные во всем наборе данных Вместо даты, которую я выбрал. Если я пытаюсь отфильтровать с @@, я получаю ошибку

Ответы [ 2 ]

4 голосов
/ 01 апреля 2019

Не будет ли запрос выглядеть так?

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

EDIT:

Я вижу, что это общедоступный набор данных. Предполагая, что вы имеете в виду дату создания, тогда:

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

Этот код проверен и работает, когда я его запускаю.

0 голосов
/ 01 апреля 2019

Ниже для BigQuery Standard 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

с результатом

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...