我目前正在尝试使用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
答案 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(*)