Database schema:

CREATE TABLE generalinfo (
	id_restaurant INTEGER NOT NULL -- example: ['2', '1'],
	label TEXT -- example: ['kabul afghan cuisine', "sparky's diner"],
	food_type TEXT -- example: ['afghani', '24 hour diner'],
	city TEXT -- example: ['san francisco', 'san carlos'],
	review REAL -- example: ['2.3', '3.8'],
	PRIMARY KEY (id_restaurant), 
	CONSTRAINT fk_generalinfo_geographic FOREIGN KEY(city) REFERENCES geographic (city)
)


CREATE TABLE geographic (
	city TEXT NOT NULL -- example: ['alamo', 'alameda'],
	county TEXT -- example: ['alameda county', 'contra costa county'],
	region TEXT -- example: ['napa valley', 'bay area'],
	PRIMARY KEY (city)
)


CREATE TABLE location (
	id_restaurant INTEGER NOT NULL -- example: ['2', '1'],
	street_num INTEGER -- example: ['242', '135'],
	street_name TEXT -- example: ['church st', 'el camino real'],
	city TEXT -- example: ['san francisco', 'san carlos'],
	PRIMARY KEY (id_restaurant), 
	CONSTRAINT fk_location_geographic FOREIGN KEY(city) REFERENCES geographic (city),
	CONSTRAINT fk_location_generalinfo FOREIGN KEY(id_restaurant) REFERENCES generalinfo (id_restaurant)
)

Question: List the restaurant's ID that has a review greater than the 70% of average review of all American restaurants with street number greater than 2000.
Evidence: American restaurant refers to food_type = 'american'; street number greater than 2000 refers to street_num > 2000; review greater than the 70% of average review refers to review > multiply(avg(review), 0.7)

SQL:
SELECT T1.id_restaurant FROM location AS T1 INNER JOIN generalinfo AS T2 ON T1.id_restaurant = T2.id_restaurant WHERE T2.food_type = 'american' AND T1.street_num > 2000 GROUP BY T1.id_restaurant ORDER BY AVG(T2.review) * 0.7 DESC