##Instruction:
Database: card_games
Total Tables: 6
Total Columns: 115

Table Schemas:

Database: card_games
Total Tables: 6
Total Columns: 115

Table Schemas:

Table: cards (74 columns)
-------------------------
• id (integer)
• artist (text): The name of the artist that illustrated the card art.
• asciiName (text): The ASCII(opens new window) (Basic/128) code formatted card name with no special unicode characters.
• availability (text): A list of the card's available printing types.
  Values: "arena", "dreamcast", "mtgo", "paper", "shandalar"
• borderColor (text): The color of the card border.
  Values: "black", "borderless", "gold", "silver", "white"
• cardKingdomFoilId (text): card Kingdom Foil Id
  Values: commonsense evidence:
cardKingdomFoilId, when paired with cardKingdomId that is not Null, is incredi...
• cardKingdomId (text): card Kingdom Id
  Values: A list of all the colors in the color indicator
• colorIdentity (text): A list of all the colors found in manaCost, colorIndicator, and text
• colorIndicator (text): A list of all the colors in the color indicator (The symbol prefixed to a card's types).
• colors (text): A list of all the colors in manaCost and colorIndicator.
  Values: Some cards may not have values, such as cards with "Devoid" in its text.
• convertedManaCost (real): The converted mana cost of the card. Use the manaValue property.
  Values: if value is higher, it means that this card cost more converted mana
• duelDeck (text): The indicator for which duel deck the card is in.
• edhrecRank (integer): The card rank on EDHRec
• faceConvertedManaCost (real): The converted mana cost or mana value for the face for either half or part of the card.
  Values: if value is higher, it means that this card cost more converted mana for the face
• faceName (text): The name on the face of the card.
• flavorName (text): The promotional card name printed above the true card name on special cards that has no game function.
  Values: The promotional card name printed above the true card name on special cards that has no game functio...
• flavorText (text): The italicized text found below the rules text that has no game function.
  Values: The italicized text found below the rules text that has no game function.
• frameEffects (text): The visual frame effects.
  Values: "colorshifted", "companion", "compasslanddfc", "devoid", "draft", "etched", "extendedart", "fullart"...
• frameVersion (text): The version of the card frame style.
  Values: "1993", "1997", "2003", "2015", "future"
• hand (text): The starting maximum hand size total modifier.
  Values: A + or - character precedes an integer. 
commonsense evidence:
positive maximum hand size: +1, +2, ....
• hasAlternativeDeckLimit (integer): If the card allows a value other than 4 copies in a deck.
  Values: 0: disallow 1: allow
• hasContentWarning (integer): If the card marked by Wizards of the Coast (opens new window) for having sensitive content. See this official article (opens new window) for more information.
  Values: 0: doesn't have 1: has sensitve content or Wizards of the Coast
commonsense evidence:
Cards with thi...
• hasFoil (integer): If the card can be found in foil
  Values: 0: cannot be found 1: can be found
• hasNonFoil (integer): If the card can be found in non-foil
  Values: 0: cannot be found 1: can be found
• isAlternative (integer): If the card is an alternate variation to an original printing
  Values: 0: is not 1: is
• isFullArt (integer): If the card has full artwork.
  Values: 0: doesn't have, 1: has full artwork
• isOnlineOnly (integer): If the card is only available in online game variations.
  Values: 0: is not 1: is
• isOversized (integer): If the card is oversized.
  Values: 0: is not 1: is
• isPromo (integer): If the card is a promotional printing.
  Values: 0: is not 1: is
• isReprint (integer): If the card has been reprinted.
  Values: 0: has not 1: has not been
• isReserved (integer): If the card is on the Magic: The Gathering Reserved List (opens new window)
  Values: If the card is on the Magic, it will appear in The Gathering Reserved List
• isStarter (integer): If the card is found in a starter deck such as Planeswalker/Brawl decks.
  Values: 0: is not 1: is
• isStorySpotlight (integer): If the card is a Story Spotlight card.
  Values: 0: is not 1: is
• isTextless (integer): If the card does not have a text box.
  Values: commonsense evidence:
0: has a text box;
1: doesn't have a text box;
• isTimeshifted (integer): If the card is time shifted
  Values: commonsense evidence:
If the card is "timeshifted", a feature of certain sets where a card will have...
• keywords (text): A list of keywords found on the card.
• layout (text): The type of card layout. For a token card, this will be "token"
• leadershipSkills (text): A list of formats the card is legal to be a commander in
• life (text): The starting life total modifier. A plus or minus character precedes an integer.
• loyalty (text): The starting loyalty value of the card.
  Values: Used only on cards with "Planeswalker" in its types. empty means unkown
• manaCost (text): The mana cost of the card wrapped in brackets for each value.
  Values: commonsense evidence:
manaCost is unconverted mana cost
• mcmId (text)
  Values: NOT USEFUL
• mcmMetaId (text)
  Values: NOT USEFUL
• mtgArenaId (text)
  Values: NOT USEFUL
• mtgjsonV4Id (text)
  Values: NOT USEFUL
• mtgoFoilId (text)
  Values: NOT USEFUL
• mtgoId (text)
  Values: NOT USEFUL
• multiverseId (text)
  Values: NOT USEFUL
• name (text): The name of the card.
  Values: Cards with multiple faces, like "Split" and "Meld" cards are given a delimiter.
• number (text): The number of the card
• originalReleaseDate (text): original Release Date
  Values: The original release date in ISO 8601(opens new window) format for a promotional card printed outsid...
• originalText (text): original Text
  Values: The text on the card as originally printed.
• originalType (text): original Type
  Values: The type of the card as originally printed. Includes any supertypes and subtypes.
• otherFaceIds (text): other Face Ids
  Values: A list of card UUID's to this card's counterparts, such as transformed or melded faces.
• power (text): The power of the card.
  Values: commonsense evidence:
∞ means infinite power
null or * refers to unknown power
• printings (text): A list of set printing codes the card was printed in, formatted in uppercase.
• promoTypes (text): A list of promotional types for a card.
  Values: "arenaleague", "boosterfun", "boxtopper", "brawldeck", "bundle", "buyabox", "convention", "datestamp...
• purchaseUrls (text): Links that navigate to websites where the card can be purchased.
• rarity (text): The card printing rarity.
• scryfallId (text)
  Values: NOT USEFUL
• scryfallIllustrationId (text)
  Values: NOT USEFUL
• scryfallOracleId (text)
  Values: NOT USEFUL
• setCode (text): The set printing code that the card is from.
• side (text): The identifier of the card side.
  Values: Used on cards with multiple faces on the same card.
commonsense evidence:
if this value is empty, th...
• subtypes (text): A list of card subtypes found after em-dash.
• supertypes (text): A list of card supertypes found before em-dash.
  Values: commonsense evidence:
list of all types should be the union of subtypes and supertypes
• tcgplayerProductId (text)
• text (text): The rules text of the card.
• toughness (text): The toughness of the card.
• type (text): The type of the card as visible, including any supertypes and subtypes.
  Values: "Artifact", "Card", "Conspiracy", "Creature", "Dragon", "Dungeon", "Eaturecray", "Elemental", "Elite...
• types (text): A list of all card types of the card, including Un‑sets and gameplay variants.
• uuid (text): The universal unique identifier (v5) generated by MTGJSON. Each entry is unique.
  Values: NOT USEFUL
• variations (text)
• watermark (text): The name of the watermark on the card.

Table: foreign_data (8 columns)
-------------------------------
• id (integer): unique id number identifying this row of data
• flavorText (text): The foreign flavor text of the card.
• language (text): The foreign language of card.
• multiverseid (integer): The foreign multiverse identifier of the card.
• name (text): The foreign name of the card.
• text (text): The foreign text ruling of the card.
• type (text): The foreign type of the card. Includes any supertypes and subtypes.
• uuid (text)

Table: legalities (4 columns)
-----------------------------
• id (integer): unique id identifying this legality
• format (text): format of play
  Values: each value refers to different rules to play
• status (text)
  Values: • legal
• banned
• restricted
• uuid (text)

Table: rulings (4 columns)
--------------------------
• id (integer): unique id identifying this ruling
• date (date): date
• text (text): description about this ruling
• uuid (text)

Table: set_translations (4 columns)
-----------------------------------
• id (integer): unique id identifying this set
• language (text): language of this card set
• setCode (text): the set code for this set
• translation (text): translation of this card set

Table: sets (21 columns)
------------------------
• id (integer): unique id identifying this set
• baseSetSize (integer): The number of cards in the set.
• block (text): The block name the set was in.
• booster (text): A breakdown of possibilities and weights of cards in a booster pack.
• code (text): The set code for the set.
• isFoilOnly (integer): If the set is only available in foil.
• isForeignOnly (integer): If the set is available only outside the United States of America.
• isNonFoilOnly (integer): If the set is only available in non-foil.
• isOnlineOnly (integer): If the set is only available in online game variations.
• isPartialPreview (integer): If the set is still in preview (spoiled). Preview sets do not have complete data.
• keyruneCode (text): The matching Keyrune code for set image icons.
• mcmId (integer): The Magic Card Marketset identifier.
• mcmIdExtras (integer): The split Magic Card Market set identifier if a set is printed in two sets. This identifier represents the second set's identifier.
• mcmName (text)
• mtgoCode (text): The set code for the set as it appears on Magic: The Gathering Online
  Values: commonsense evidence:
if the value is null or empty, then it doesn't appear on Magic: The Gathering ...
• name (text): The name of the set.
• parentCode (text): The parent set code for set variations like promotions, guild kits, etc.
• releaseDate (date): The release date in ISO 8601 format for the set.
• tcgplayerGroupId (integer): The group identifier of the set on TCGplayer
• totalSetSize (integer): The total number of cards in the set, including promotional and related supplemental products but excluding Alchemy modifications - however those cards are included in the set itself.
• type (text): The expansion type of the set.
  Values: "alchemy", "archenemy", "arsenal", "box", "commander", "core", "draft_innovation", "duel_deck", "exp...

##Evidence:
Story Spotlight card refers to isStorySpotlight = 1; French is the language; Percentage = Divide(Count(id) where language = 'French' and isStorySpotlight = 1, Count(id) where isStorySpotlight = 1)*100

##Role Access Policy (Column-Level):
Role: CardCatalogManager
Accessible Columns: cards: ALL COLUMNS; foreign_data: ALL COLUMNS; legalities: ALL COLUMNS; sets: ALL COLUMNS; set_translations: ALL COLUMNS; rulings: ALL COLUMNS

Based on the above schema and your role's column-level access policy, generate a SQL query to answer the question. If your role does not have access to the required columns, respond with: "Sorry, I cannot answer."


Question: What is the percentage of cards whose language is French among the Story Spotlight cards?
Evidence: Story Spotlight card refers to isStorySpotlight = 1; French is the language; Percentage = Divide(Count(id) where language = 'French' and isStorySpotlight = 1, Count(id) where isStorySpotlight = 1)*100
Answer: SELECT CAST(SUM(CASE WHEN T2.language = 'French' THEN 1 ELSE 0 END) AS REAL) * 100 / COUNT(T1.id) FROM cards AS T1 INNER JOIN foreign_data AS T2 ON T1.uuid = T2.uuid WHERE T1.isStorySpotlight = 1
Permission: allowed (All required columns are permitted)
Gold SQL: SELECT CAST(SUM(CASE WHEN T2.language = 'French' THEN 1 ELSE 0 END) AS REAL) * 100 / COUNT(T1.id) FROM cards AS T1 INNER JOIN foreign_data AS T2 ON T1.uuid = T2.uuid WHERE T1.isStorySpotlight = 1