Database schema:

CREATE TABLE alignment (
	id INTEGER NOT NULL -- example: ['2', '1'],
	alignment TEXT DEFAULT NULL -- example: ['Good', 'Bad'],
	PRIMARY KEY (id)
)


CREATE TABLE attribute (
	id INTEGER NOT NULL -- example: ['2', '1'],
	attribute_name TEXT DEFAULT NULL -- attribute name, example: ['Intelligence', 'Strength'],
	PRIMARY KEY (id)
)


CREATE TABLE colour (
	id INTEGER NOT NULL -- example: ['2', '1'],
	colour TEXT DEFAULT NULL -- example: ['Amber', 'No Colour'],
	PRIMARY KEY (id)
)


CREATE TABLE gender (
	id INTEGER NOT NULL -- example: ['2', '1'],
	gender TEXT DEFAULT NULL -- example: ['Male', 'Female'],
	PRIMARY KEY (id)
)


CREATE TABLE hero_attribute (
	hero_id INTEGER DEFAULT NULL -- hero id, example: ['2', '1'],
	attribute_id INTEGER DEFAULT NULL -- attribute id, example: ['2', '1'],
	attribute_value INTEGER DEFAULT NULL -- attribute value, example: ['75', '80'],
	CONSTRAINT fk_hero_attribute_attribute FOREIGN KEY(attribute_id) REFERENCES attribute (id),
	CONSTRAINT fk_hero_attribute_superhero FOREIGN KEY(hero_id) REFERENCES superhero (id)
)


CREATE TABLE hero_power (
	hero_id INTEGER DEFAULT NULL -- hero id, example: ['2', '1'],
	power_id INTEGER DEFAULT NULL -- power id, example: ['1', '18'],
	CONSTRAINT fk_hero_power_superhero FOREIGN KEY(hero_id) REFERENCES superhero (id),
	CONSTRAINT fk_hero_power_superpower FOREIGN KEY(power_id) REFERENCES superpower (id)
)


CREATE TABLE publisher (
	id INTEGER NOT NULL -- example: ['2', '1'],
	publisher_name TEXT DEFAULT NULL -- example: ['', 'ABC Studios'],
	PRIMARY KEY (id)
)


CREATE TABLE race (
	id INTEGER NOT NULL -- example: ['2', '1'],
	race TEXT DEFAULT NULL -- example: ['Alien', '-'],
	PRIMARY KEY (id)
)


CREATE TABLE superhero (
	id INTEGER NOT NULL -- example: ['2', '1'],
	superhero_name TEXT DEFAULT NULL -- superhero name, example: ['A-Bomb', '3-D Man'],
	full_name TEXT DEFAULT NULL -- full name, example: ['Charles Chandler', 'Richard Milhouse Jones'],
	gender_id INTEGER DEFAULT NULL -- gender id, example: ['2', '1'],
	eye_colour_id INTEGER DEFAULT NULL -- eye colour id, example: ['9', '33'],
	hair_colour_id INTEGER DEFAULT NULL -- hair colour id, example: ['1', '13'],
	skin_colour_id INTEGER DEFAULT NULL -- skin colour id, example: ['7', '1'],
	race_id INTEGER DEFAULT NULL -- race id, example: ['24', '1'],
	publisher_id INTEGER DEFAULT NULL -- publisher id, example: ['13', '3'],
	alignment_id INTEGER DEFAULT NULL -- alignment id, example: ['2', '1'],
	height_cm INTEGER DEFAULT NULL -- height cm, example: ['203', '188'],
	weight_kg INTEGER DEFAULT NULL -- weight kg, example: ['441', '90'],
	PRIMARY KEY (id), 
	CONSTRAINT fk_superhero_alignment FOREIGN KEY(alignment_id) REFERENCES alignment (id),
	CONSTRAINT fk_superhero_colour FOREIGN KEY(eye_colour_id) REFERENCES colour (id),
	CONSTRAINT fk_superhero_gender FOREIGN KEY(gender_id) REFERENCES gender (id),
	CONSTRAINT fk_superhero_colour FOREIGN KEY(hair_colour_id) REFERENCES colour (id),
	CONSTRAINT fk_superhero_publisher FOREIGN KEY(publisher_id) REFERENCES publisher (id),
	CONSTRAINT fk_superhero_race FOREIGN KEY(race_id) REFERENCES race (id),
	CONSTRAINT fk_superhero_colour FOREIGN KEY(skin_colour_id) REFERENCES colour (id)
)


CREATE TABLE superpower (
	id INTEGER NOT NULL -- example: ['2', '1'],
	power_name TEXT DEFAULT NULL -- power name, example: ['Agility', 'Accelerated Healing'],
	PRIMARY KEY (id)
)

Question: Among all superheroes in Marvel Comics, identify the percentage of 'good' superheroes.
Evidence: Marvel Comics refers to publisher_name = 'Marvel Comics'; percentage = MULTIPLY(DIVIDE(SUM(alignment = 'Good' WHERE publisher_name = 'Marvel Comics'), COUNT(publisher_name = 'Marvel Comics')), 100.0); good superheroes refers to alignment = 'Good';

SQL:
SELECT CAST(COUNT(CASE WHEN T3.alignment = 'Good' THEN T1.id ELSE NULL END) AS REAL) * 100 / COUNT(T1.id) FROM superhero AS T1 INNER JOIN publisher AS T2 ON T1.publisher_id = T2.id INNER JOIN alignment AS T3 ON T1.alignment_id = T3.id WHERE T2.publisher_name = 'Marvel Comics'