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: What is the percentage of superheroes who act in their own self-interest or make decisions based on their own moral code? Indicate how many of the said superheroes were published by Marvel Comics.
Evidence: published by Marvel Comics refers to publisher_name = 'Marvel Comics'; superheroes who act in their own self-interest or make decisions based on their own moral code refers to alignment = 'Bad'; calculation = MULTIPLY(DIVIDE(SUM(alignment = 'Bad); count(id)), 100)

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