如何在 Google Big Query 中正确使用 GROUP BY 命令?

How to use GROUP BY command properly in Google Big Query?

我在尝试仅获取特定数据时遇到了一些问题。首先我不知道如何创建一个 sql 查询(当前 sql 查询我只能抓取一个用户)所以我可以像这样抓取数据。

其次,我想获取截至当前日期的 1 年数据。下面是我到目前为止完成的 sql 查询(我需要一个一个地手动完成)。

SELECT type,  COUNT(*) FROM (
  TABLE_DATE_RANGE([githubarchive:day.events_], 
    TIMESTAMP('2013-1-01'), 
    TIMESTAMP('2015-08-28')
  )) AS events
WHERE type IN ("CommitCommentEvent","CreateEvent","DeleteEvent","DeploymentEvent","DeploymentStatusEvent","DownloadEvent","FollowEvent",
"ForkEvent","ForkApplyEvent","GistEvent","GollumEvent","IssueCommentEvent","IssuesEvent","MemberEvent","MembershipEvent","PageBuildEvent",
"PublicEvent","PullRequestEvent","PullRequestReviewCommentEvent","PushEvent","ReleaseEvent","RepositoryEvent","StatusEvent","TeamAddEvent",
"WatchEvent") AND actor.login = "datomnurdin"
GROUP BY type;

参考:

https://www.githubarchive.org/

https://github.com/igrigorik/githubarchive.org

以下是正确旋转数据的方法:

SELECT actor.login,
ifnull(sum(if(type='CommitCommentEvent',1,null)),0) as CommitCommentEvent,
ifnull(sum(if(type='CreateEvent',1,null)),0) as CreateEvent,
ifnull(sum(if(type='DeleteEvent',1,null)),0) as  DeleteEvent,
ifnull(sum(if(type='DeploymentEvent',1,null)),0) as  DeploymentEvent,
ifnull(sum(if(type='DeploymentStatusEvent',1,null)),0) as  DeploymentStatusEvent,
ifnull(sum(if(type='DownloadEvent',1,null)),0) as  DownloadEvent,
ifnull(sum(if(type='FollowEvent',1,null)),0) as  FollowEvent,
ifnull(sum(if(type='ForkEvent',1,null)),0) as  ForkEvent,
ifnull(sum(if(type='ForkApplyEvent',1,null)),0) as  ForkApplyEvent,
ifnull(sum(if(type='GistEvent',1,null)),0) as  GistEvent,
ifnull(sum(if(type='GollumEvent',1,null)),0) as  GollumEvent,
ifnull(sum(if(type='IssueCommentEvent',1,null)),0) as  IssueCommentEvent,
ifnull(sum(if(type='IssuesEvent',1,null)),0) as  IssuesEvent,
ifnull(sum(if(type='MemberEvent',1,null)),0) as  MemberEvent,
ifnull(sum(if(type='MembershipEvent',1,null)),0) as  MembershipEvent,
ifnull(sum(if(type='PageBuildEvent',1,null)),0) as  PageBuildEvent,
ifnull(sum(if(type='PublicEvent',1,null)),0) as  PublicEvent,
ifnull(sum(if(type='PullRequestEvent',1,null)),0) as  PullRequestEvent,
ifnull(sum(if(type='PullRequestReviewCommentEvent',1,null)),0) as  PullRequestReviewCommentEvent,
ifnull(sum(if(type='PushEvent',1,null)),0) as  PushEvent,
ifnull(sum(if(type='ReleaseEvent',1,null)),0) as  ReleaseEvent,
ifnull(sum(if(type='RepositoryEvent',1,null)),0) as  RepositoryEvent,
ifnull(sum(if(type='StatusEvent',1,null)),0) as  StatusEvent,
ifnull(sum(if(type='TeamAddEvent',1,null)),0) as  TeamAddEvent,
ifnull(sum(if(type='WatchEvent',1,null)),0) as  WatchEvent,
FROM (
  TABLE_DATE_RANGE([githubarchive:day.events_], 
    DATE_ADD(CURRENT_TIMESTAMP(), -1, "YEAR"),
    CURRENT_TIMESTAMP()
  )) AS events
WHERE type IN ("CommitCommentEvent","CreateEvent","DeleteEvent","DeploymentEvent","DeploymentStatusEvent","DownloadEvent","FollowEvent",
"ForkEvent","ForkApplyEvent","GistEvent","GollumEvent","IssueCommentEvent","IssuesEvent","MemberEvent","MembershipEvent","PageBuildEvent",
"PublicEvent","PullRequestEvent","PullRequestReviewCommentEvent","PushEvent","ReleaseEvent","RepositoryEvent","StatusEvent","TeamAddEvent",
"WatchEvent")
GROUP BY 1
limit 100