如何获取具有最大星数和少于100个提交的Java存储库

时间:2015-06-06 05:00:01

标签: google-bigquery github-archive

我目前正在尝试使用GitHub Archive和BigQuery获取拥有最多星数和少于100个提交的前100个Java存储库。你可以帮忙为此目的提出一个问题。

我为了获得Java语言的前100条记录而编写的初始查询如下:

SELECT repository_name
FROM [githubarchive:github.timeline]
WHERE repository_language = 'Java' 
AND PARSE_UTC_USEC(repository_created_at) >= PARSE_UTC_USEC('1996-01-01 00:00:00') 
AND PARSE_UTC_USEC(repository_created_at) < PARSE_UTC_USEC('2015-05-30 00:00:00') 
GROUP BY repository_name
LIMIT 100 

1 个答案:

答案 0 :(得分:2)

添加HAVING子句以在上添加条件:

SELECT repository_name
FROM [githubarchive:github.timeline]
WHERE repository_language = 'Java' 
AND PARSE_UTC_USEC(repository_created_at) BETWEEN PARSE_UTC_USEC('1996-01-01 00:00:00') AND PARSE_UTC_USEC('2015-05-30 00:00:00') 
GROUP BY repository_name
HAVING COUNT(*) < 100  -- Add this clause
ORDER BY COUNT(*) DESC -- Add this to make the LIMIT meaningful
LIMIT 100

我不知道100的{​​{1}}是否与LIMIT最大提交次数相关。如果是这样,则不需要它。如果不是(并且您实际上想要将行限制为100),则添加ORDER BY以选择所需的 100行(而不是100行)。

我还将日期范围条件简化为100

虽然以上是有效的SQL(在MySQL,Postgres,SQLServer和Oracle中测试好),但是如果bigquery无法按BETWEEN处理顺序(由OP报告),请使用子查询:< / p>

COUNT(*)