Database schema:

CREATE TABLE cars (
	id INTEGER NOT NULL -- example: ['2', '1'],
	train_id INTEGER DEFAULT NULL -- example: ['2', '1'],
	position INTEGER DEFAULT NULL -- example: ['2', '1'],
	shape TEXT DEFAULT NULL -- example: ['rectangle', 'bucket'],
	len TEXT DEFAULT NULL -- example: ['long', 'short'],
	sides TEXT DEFAULT NULL -- example: ['not_double', 'double'],
	roof TEXT DEFAULT NULL -- example: ['none', 'peaked'],
	wheels INTEGER DEFAULT NULL -- example: ['2', '3'],
	load_shape TEXT DEFAULT NULL -- example: ['hexagon', 'circle'],
	load_num INTEGER DEFAULT NULL -- example: ['1', '3'],
	PRIMARY KEY (id), 
	CONSTRAINT fk_cars_trains FOREIGN KEY(train_id) REFERENCES trains (id)
)


CREATE TABLE trains (
	id INTEGER NOT NULL -- example: ['2', '1'],
	direction TEXT DEFAULT NULL -- example: ['west', 'east'],
	PRIMARY KEY (id)
)

Question: What is the percentage of all the trains with at least 4 cars? List the directions of the said trains.
Evidence: at least 4 cars refers to trailPosi > = 4; calculation = MULTIPLY(DIVIDE(count(trailPosi > = 4 then id), count(id)), 100)

SQL:
SELECT CAST(COUNT(CASE WHEN T2.trailPosi >= 4 THEN T1.id ELSE NULL END) AS REAL) * 100 / COUNT(T1.id) FROM trains AS T1 INNER JOIN ( SELECT train_id, MAX(position) AS trailPosi FROM cars GROUP BY train_id ) AS T2 ON T1.id = T2.train_id UNION ALL SELECT T1.direction FROM trains AS T1 INNER JOIN ( SELECT train_id, MAX(position) AS trailPosi FROM cars t GROUP BY train_id ) AS T2 ON T1.id = T2.train_id AND T2.trailPosi >= 4