添加一个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
的是否LIMIT
与100
最大提交计数有关。如果是这样,则不需要。如果不是(并且您实际上希望将行限制为 100),则添加一个 ORDER BY 以选择您想要的100 行(而不是 100 个随机行)。
我还将日期范围条件简化为BETWEEN
.
尽管以上是有效的 SQL(在 MySQL、Postgres、SQLServer 和 Oracle 中测试正常),但如果 bigquery 无法处理 order by COUNT(*)
(如 OP 报告的那样),请使用子查询:
SELECT * FROM (
SELECT repository_name, COUNT(*) commit_count
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
) x
ORDER BY commit_count DESC
LIMIT 100