Database schema:

CREATE TABLE chapters (
	id INTEGER -- example: ['18704', '18705'],
	"Act" INTEGER NOT NULL -- example: ['2', '1'],
	"Scene" INTEGER NOT NULL -- example: ['2', '1'],
	"Description" TEXT NOT NULL -- example: ['The sea-coast.', 'DUKE ORSINO’s palace.'],
	work_id INTEGER NOT NULL -- example: ['2', '1'],
	PRIMARY KEY (id), 
	CONSTRAINT fk_chapters_works FOREIGN KEY(work_id) REFERENCES works (id)
)


CREATE TABLE characters (
	id INTEGER -- example: ['2', '1'],
	"CharName" TEXT NOT NULL -- example: ['First Citizen', 'First Apparition'],
	"Abbrev" TEXT NOT NULL -- example: ['First Citizen', 'First Apparition'],
	"Description" TEXT NOT NULL -- example: ['', 'A senator of Venice'],
	PRIMARY KEY (id)
)


CREATE TABLE paragraphs (
	id INTEGER -- example: ['630863', '630864'],
	"ParagraphNum" INTEGER NOT NULL -- example: ['4', '3'],
	"PlainText" TEXT NOT NULL -- example: ['[Enter DUKE ORSINO, CURIO, and other Lords; Musici', 'If music be the food of love, play on;\nGive me exc'],
	character_id INTEGER NOT NULL -- example: ['1261', '840'],
	chapter_id INTEGER DEFAULT 0 NOT NULL -- example: ['18704', '18705'],
	PRIMARY KEY (id), 
	CONSTRAINT fk_paragraphs_chapters FOREIGN KEY(chapter_id) REFERENCES chapters (id),
	CONSTRAINT fk_paragraphs_characters FOREIGN KEY(character_id) REFERENCES characters (id)
)


CREATE TABLE works (
	id INTEGER -- example: ['2', '1'],
	"Title" TEXT NOT NULL -- example: ['Twelfth Night', "All's Well That Ends Well"],
	"LongTitle" TEXT NOT NULL -- example: ['Twelfth Night, Or What You Will', "All's Well That Ends Well"],
	"Date" INTEGER NOT NULL -- example: ['1602', '1599'],
	"GenreType" TEXT NOT NULL -- example: ['Tragedy', 'Comedy'],
	PRIMARY KEY (id)
)

Question: Among the comedy works of Shakespeare, what is the percentage of his works with a character named "antonio"?
Evidence: comedy works refers to GenreType = 'Comedy'; a character named "antonio" refers to CharName = 'antonio'; percentage = divide(sum(CharName = 'Antonio'), count(CharName)) as percentage

SQL:
SELECT CAST(SUM(IIF(T4.CharName = 'antonio', 1, 0)) AS REAL) * 100 / COUNT(T1.id) FROM works AS T1 INNER JOIN chapters AS T2 ON T1.id = T2.work_id INNER JOIN paragraphs AS T3 ON T2.id = T3.chapter_id INNER JOIN characters AS T4 ON T3.character_id = T4.id WHERE T1.GenreType = 'Comedy'