SELECT
	client_ip,
	MAX_BY(counter, counter) as max_counter_per_min
 FROM (
	WITH logs_with_concat_data AS (
		SELECT
			requestip as client_ip,
			cast(status as varchar) as status,
			parse_datetime( concat( concat( format_datetime(date, 'yyyy-MM-dd'), '-' ), time ), 'yyyy-MM-dd-HH:mm:ss') AS datetime
		FROM
			testdb.testtable
		WHERE year = 2020
		AND month = 05
		AND day = 07
		AND hour between 09 and 13
	)
	SELECT
		client_ip,
		COUNT(*) as counter
	FROM
		logs_with_concat_data
	WHERE
		datetime > TIMESTAMP '2020-05-07 09:33:00'
		AND status = ANY (VALUES '400', '401', '403', '404', '405')
	GROUP BY
		client_ip,
		date_trunc('minute', datetime)
	HAVING
		COUNT(*) >= 2000
) GROUP BY
	client_ip
ORDER BY
	max_counter_per_min DESC
LIMIT 10000;