Database schema:

CREATE TABLE station (
	id INTEGER NOT NULL -- example: ['2', '3'],
	name TEXT -- example: ['San Jose Diridon Caltrain Station', 'San Jose Civic Center'],
	lat REAL -- example: ['37.329732', '37.330698'],
	long REAL -- example: ['-121.90178200000001', '-121.888979'],
	dock_count INTEGER -- example: ['15', '27'],
	city TEXT -- example: ['Redwood City', 'San Jose'],
	installation_date TEXT -- example: ['8/6/2013', '8/5/2013'],
	PRIMARY KEY (id)
)


CREATE TABLE status (
	station_id INTEGER -- example: ['2', '3'],
	bikes_available INTEGER -- example: ['2', '3'],
	docks_available INTEGER -- example: ['24', '25'],
	time TEXT -- example: ['2013/08/29 12:06:01', '2013/08/29 12:07:01']
)


CREATE TABLE trip (
	id INTEGER NOT NULL -- example: ['4073', '4069'],
	duration INTEGER -- example: ['174', '1067'],
	start_date TEXT -- example: ['8/29/2013 9:08', '8/29/2013 9:24'],
	start_station_name TEXT -- example: ['South Van Ness at Market', '2nd at South Park'],
	start_station_id INTEGER -- example: ['64', '66'],
	end_date TEXT -- example: ['8/29/2013 9:11', '8/29/2013 9:42'],
	end_station_name TEXT -- example: ['San Francisco Caltrain 2 (330 Townsend)', '2nd at South Park'],
	end_station_id INTEGER -- example: ['64', '69'],
	bike_id INTEGER -- example: ['288', '321'],
	subscription_type TEXT -- example: ['Customer', 'Subscriber'],
	zip_code INTEGER -- example: ['94114', '94703'],
	PRIMARY KEY (id)
)


CREATE TABLE weather (
	date TEXT -- example: ['8/30/2013', '8/29/2013'],
	max_temperature_f INTEGER -- example: ['78', '74'],
	mean_temperature_f INTEGER -- example: ['68', '69'],
	min_temperature_f INTEGER -- example: ['60', '61'],
	max_dew_point_f INTEGER -- example: ['61', '57'],
	mean_dew_point_f INTEGER -- example: ['58', '56'],
	min_dew_point_f INTEGER -- example: ['54', '56'],
	max_humidity INTEGER -- example: ['93', '90'],
	mean_humidity INTEGER -- example: ['75', '70'],
	min_humidity INTEGER -- example: ['50', '57'],
	max_sea_level_pressure_inches REAL -- example: ['30.05', '30.07'],
	mean_sea_level_pressure_inches REAL -- example: ['30.02', '30.0'],
	min_sea_level_pressure_inches REAL -- example: ['29.93', '29.97'],
	max_visibility_miles INTEGER -- example: ['9', '10'],
	mean_visibility_miles INTEGER -- example: ['9', '10'],
	min_visibility_miles INTEGER -- example: ['7', '10'],
	"max_wind_Speed_mph" INTEGER -- example: ['23', '29'],
	mean_wind_speed_mph INTEGER -- example: ['11', '13'],
	max_gust_speed_mph INTEGER -- example: ['28', '35'],
	precipitation_inches TEXT -- example: ['0', '0.23'],
	cloud_cover INTEGER -- example: ['2', '4'],
	events TEXT -- example: ['', 'Fog'],
	wind_dir_degrees INTEGER -- example: ['286', '291'],
	zip_code TEXT -- example: ['94063', '94107']
)

Question: In 2014, what is the shortest duration of trips by subscribers which started at 2nd at Folsom and ended in the 5th at Howard stations, and by how much shorter than the average? Give me the minimum temperature, maximum gust speed and weather event on that trip.
Evidence: the shortest duration refers to MIN(duration); subscription_type = 'Subscriber', start_station_name = '2nd at Folsom', end_station_name = '5th at Howard'; in 2014 refers to time period between start_date = '1/1/2014 0:00' and end_date = '12/31/2014 11:59; Average duration = DIVIDE(SUM(duration), COUNT(id));

SQL:
SELECT MIN(T1.duration) , MIN(T1.duration) - AVG(T1.duration), T2.min_temperature_f FROM trip AS T1 INNER JOIN weather AS T2 ON T2.zip_code = T1.zip_code WHERE T1.start_date = '1/1/2014 0:00' AND T1.end_date = '12/31/2014 11:59' AND T1.start_station_name = '2nd at Folsom' AND T1.end_station_name = '5th at Howard' AND T1.subscription_type = 'Subscriber'