Cross-border share by card tier

conditional logic

Cross-border share by card tier

Visa SQL Interview Question

Visa earns extra fees on cross-border spending, where a card is used in a different country from the one that issued it. The product team wants to know which card tiers are used abroad the most.

Find the percentage of approved transactions that were cross-border for each card_tier, as cross_border_pct, rounded to 1 decimal place.

Asked of

  • Data Analyst
  • Business Analyst
  • Data Scientist
  • Analytics Engineer

card_transactionsTable18 rows

Column NameType
transaction_idBIGINT
card_idBIGINT
merchant_countryVARCHAR
merchant_categoryVARCHAR
amount_usdDOUBLE
transaction_dateDATE
statusVARCHAR

cardsTable6 rows

Column NameType
card_idBIGINT
card_tierVARCHAR
issuing_countryVARCHAR

card_transactionsExample Input

transaction_idcard_idmerchant_countrymerchant_categoryamount_usdtransaction_datestatus
30011United StatesGroceries84.22024-01-04approved
30022FranceTravel6402024-01-09approved
30033CanadaRestaurants52.752024-01-15approved
30044SpainTravel410.32024-01-21declined
30056JapanElectronics12992024-01-28approved
30065CanadaGroceries96.42024-02-02approved
30071MexicoTravel2752024-02-08approved
30083United StatesElectronics899.992024-02-13approved
30092United StatesRestaurants68.12024-02-17approved
30104United KingdomGroceries58.62024-02-22approved
30116United StatesTravel5202024-02-27declined
30125United StatesRestaurants44.82024-03-03approved

cardsExample Input

card_idcard_tierissuing_country
1ClassicUnited States
2GoldUnited States
3SignatureCanada
4ClassicUnited Kingdom
5GoldCanada
6SignatureUnited States

Example Output

card_tiercross_border_pct
Classic33.3
Gold50
Signature66.7

Explanation

Gold cards have 4 approved transactions in the example. Two of them were cross-border: a card issued in the United States was used in France, and a card issued in Canada was used in the United States. That gives 50.0%. Declined transactions are not counted.

The example above is a small slice of the data. Your query runs against the full tables.