Peru · SQL and data analysis · Live online, in English

SQL and data analysis course in Peru

SQL is the language in which most organisations ask questions of their data, and the one analysts are expected to know before Python. This page explains what a course should teach, which of ours suits an analyst or a developer, and works through a real investigation of Chiclayo's open waste-collection data, where a simple monthly total hides a month that never happened twice.

Live classes since 2020 · 10,000+ learners worldwide · real tables from the first week

The short answer

At Modern Age Coders, SQL and data analysis for learners in Peru is taught live, online and in English. Adults and university students go from a first SELECT to joins, grouping, window functions and checks on data quality, then add spreadsheets, Python and dashboards; teenagers from 13 have their own SQL course. We practise on real open data, including Peruvian municipal registers, and teach people to question a total before reporting it. A mentor leads every class on video, in a class of fifteen to twenty or one to one, at the day and hour you choose.

Start here

Three SQL and data analysis courses

One for analysts, one for people who build databases, and one for teenagers. Each starts from zero.

Why SQL

Why learn SQL if you already use Excel?

Because a spreadsheet shows you the data and SQL asks it questions. Once a table is too large to scroll, shared by several people or stored in a company system, SQL is how you reach it.

Questions you can repeat

A query is a written question. Run it again next month on new data and you get the new answer, with no hand-copied formulas to drift out of step.

Data where it lives

Sales systems, school registers, hospital stock, municipal records: most are databases. SQL reads them directly instead of waiting for someone to export a file.

Checks you can show

A query that finds duplicates or contradictions is evidence another analyst can rerun. That is the heart of the lesson further down this page.

What the course teaches

SELECT, WHERE and ORDER BY; aggregates with GROUP BY and HAVING; joins between tables; subqueries and common table expressions; window functions for running totals and rankings; and the design of tables, keys and indexes.

Alongside the syntax, a set of habits: count rows before and after every join, check that keys are unique, compare two columns that should agree, and never report a total that has not been checked another way.

Where Python and dashboards come in

Our analysis course pairs SQL with Python for cleaning and charts, and with a business intelligence tool for dashboards. The lesson below runs SQL from Python on purpose: it is how many analysts work, and it needs nothing but Python, which already includes SQLite.

Developers take the MySQL course instead, which goes deeper into database design, transactions and administration.

Peruvian open data

What does Chiclayo publish about its rubbish collection?

The Municipalidad Provincial de Chiclayo publishes the tonnes of solid waste collected in the district of Chiclayo, shift by shift and day by day, on Peru's Plataforma Nacional de Datos Abiertos. It is a small, honest-looking table, and an ideal first SQL dataset.

The Chiclayo waste-collection register in its publisher's own description
ItemDescription on datosabiertos.gob.pe
PublisherMunicipalidad Provincial de Chiclayo, through its Sub-Gerencia de Residuos Sólidos
ContentWeight of solid waste collected, in tonnes, by collection shift and day
Period2023 to April 2026
Person who recorded the weightAnonymised
Update frequencyMonthly
Released and modifiedReleased 8 March 2026; last modified 9 May 2026
LicenceODC-By, the Open Data Commons Attribution License

Taken from the "Registro de recolección de residuos sólidos en el distrito de Chiclayo" page of the Municipalidad Provincial de Chiclayo on datosabiertos.gob.pe; page and file retrieved 9 November 2026. In the file we downloaded: 3,648 rows, three shifts, dates from 1 January 2023 to 30 April 2026; these counts are ours.

Chiclayo in figures

Chiclayo city counted 552,508 people at the 2017 census, which made it one of the largest cities in Peru; INEI has not yet published city figures from the 2025 census. The department of Lambayeque, of which Chiclayo is the capital, counted 1,404,633 people in the 2025 census.

The dataset covers only the district of Chiclayo, not the whole city or province, which is the kind of detail an analyst writes down before comparing it with anything else.

First look, before any SQL

The file is in Latin-1, not UTF-8, so opening it the default way fails on the first accented letter. One column header, "PROVINCIA ", ends with a space. The weekday column spells Wednesday both MIERCOLES and MIÉRCOLES, and some unit values carry a trailing space.

None of that is unusual. It is simply what real registers look like, and every one of those details would break a careless query. Learners write them into a short data note before going further.

An SQL lesson

Why did Chiclayo seem to collect twice as much rubbish in October 2024?

It did not. But the first query any analyst would write says it did, and says nothing at all about November. Here is how SQL finds out why, in four short queries.

Load the file into SQLite (Python standard library only)Python
import csv, sqlite3

FILE = "residuos_chiclayo_abril2026.csv"

db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE r (fecha TEXT, mes TEXT, dia TEXT, turno TEXT, peso REAL)")
with open(FILE, encoding="latin-1") as f:
    for row in csv.DictReader(f):
        db.execute("INSERT INTO r VALUES (?, ?, ?, ?, ?)",
                   (row["FECHA_REGISTRO"], row["MES"], row["DIA"].strip(),
                    row["TURNO"], float(row["PESO"])))

def show(sql):
    for row in db.execute(sql):
        print(*row, sep=" | ")
    print()

This keeps five columns: the date of the record, the month column, the weekday name, the shift and the weight in tonnes. show() prints each result row with | between the values.

The obvious first question

A manager asks for tonnes collected per month at the end of 2024. The natural query takes the month from the date, groups by it and adds up the weight.

Before reading the result, the mentor asks what each month should look like: about 90 or 93 shifts, three a day, and a total in the same range as its neighbours.

What comes back

September has 90 shifts and December 93, as expected. October has 183 shifts and almost double the tonnes. November is not there at all.

Many reports would print this table. A good analyst sees two alarms: a month with twice the expected rows, and a month with none.

Query 1: monthly totals by the month in the datePython
show("""
SELECT substr(fecha, 1, 6) AS month, COUNT(*) AS shifts, ROUND(SUM(peso), 1) AS tonnes
FROM r
WHERE fecha BETWEEN '20240901' AND '20241231'
GROUP BY month
""")

It prints 202409 | 90 | 6368.6, 202410 | 183 | 13921.5 and 202412 | 93 | 6924.9. November 2024 is missing.

Every day should have exactly three rows, one per shift, so the date is a key that ought to be unique per shift. GROUP BY with HAVING finds the days that break the rule. Then two columns that must agree are compared: the file's own month column against the month inside the date, and the weekday name against the weekday SQLite computes from the date.

Queries 2 to 5: find the clash, explain it, fix the totalPython
show("""
SELECT fecha, COUNT(*) AS rows_that_day
FROM r
GROUP BY fecha
HAVING COUNT(*) <> 3
ORDER BY rows_that_day DESC
LIMIT 3
""")

show("""
SELECT mes, substr(fecha, 1, 6) AS month_in_date, COUNT(*)
FROM r
WHERE mes <> substr(fecha, 1, 6)
GROUP BY mes, month_in_date
""")

show("""
SELECT fecha, dia,
       strftime('%w', substr(fecha,1,4) || '-' || substr(fecha,5,2) || '-' || substr(fecha,7,2)) AS weekday_of_date
FROM r
WHERE mes = '202411'
LIMIT 1
""")

show("""
SELECT mes, COUNT(*) AS shifts, ROUND(SUM(peso), 1) AS tonnes
FROM r
WHERE mes BETWEEN '202409' AND '202412'
GROUP BY mes
""")

It prints 20250630 | 90, 20241030 | 6 and 20241029 | 6; then 202411 | 202410 | 90; then 20241001 | VIERNES | 2; and finally 202409 | 90 | 6368.6, 202410 | 93 | 7342.9, 202411 | 90 | 6578.6 and 202412 | 93 | 6924.9.

Chiclayo, end of 2024: tonnes by the month in the date against tonnes by the month column (our queries)
MonthShifts, grouped by dateTonnes, grouped by dateTonnes, grouped by month column
September 2024906,368.66,368.6
October 202418313,921.57,342.9
November 20240none6,578.6
December 2024936,924.96,924.9

Credit: waste-collection register of the Municipalidad Provincial de Chiclayo, published on datosabiertos.gob.pe under ODC-By. We wrote and ran the queries, and computed the totals, on 9 November 2026 (Python 3, SQLite 3.50.4).

The story is now clear. The 90 rows whose month column says November 2024 carry October dates, 1 to 30 October. The weekday settles which column to trust: the first of those rows is dated 1 October 2024 but its weekday says VIERNES, Friday, while SQLite's strftime('%w') returns 2, a Tuesday. 1 November 2024 was a Friday. So the month column and the weekday are right, and the date was typed with the wrong month. Grouped by the month column, every month has 90 or 93 shifts and a believable total.

The first clash query found a second, stranger problem: 90 rows all dated 30 June 2025. Their weekday names run Sunday, Monday, Tuesday and so on in order, and 1 June 2025 was a Sunday, so the rows almost certainly cover the whole of June with one date pasted down the column. That one is left for the learner, below. Neither problem was visible in the dataset page, and neither needed anything more advanced than GROUP BY, HAVING and a comparison of two columns.

  1. Rebuild June 2025. Assuming the rows are in date order, three per day, write a query or a short Python step that gives each one its real date. How would you check that your fix is right?
  2. Count the gaps. Use a table of every calendar date from 1 January 2023 to 30 April 2026 and a LEFT JOIN to list the days with no rows. Which months are they in?
  3. Clean the weekday. Make MIERCOLES and MIÉRCOLES the same value, then compare the average tonnes per shift on each weekday.
  4. Write the note. In five sentences, tell the municipality what you found, with the query that proves each point.

Choosing a course

Which SQL course should I take?

Pick by what you will do with SQL most days. The table is our own advice.

Which of our SQL-related courses fits which goal (our advice)
If you mostly want toTakeLength
Analyse data and build reportsData analysis: Excel, SQL, Python and BI8 to 10 months
Design and run databases for applicationsMySQL: SQL and database design7 to 8 months
Start from spreadsheets, without programmingData and AI analytics for non-programmers4 months
Go on to statistics and machine learningData science course, after SQL10 to 12 months
Learn SQL as a teenagerMySQL for teens, ages 13 to 185 to 6 months

Course lengths are from our own syllabuses. Our advice, not a ranking; the mentor confirms the choice at the free class.

Analysts in Peruvian organisations

Many of our adult learners already prepare monthly reports by hand in spreadsheets. The analysis course moves the same work into SQL and Python so it runs again next month in seconds, with checks like the ones above built in.

Our Spanish page for adults learning to code in Peru describes how classes fit around a job.

Students and future data scientists

University students in Peru meet SQL in database courses, often only as syntax. We add the analysis habits and the English vocabulary used in documentation and interviews.

If statistics and models are the goal, SQL comes first and data science second. Our Spanish page, data science en inglés, explains that next step.

Language of the classes

Are the classes in Spanish?

No. We teach only in English, live and online, with mentors based in India who adapt to each learner's level.

SQL is already half English

SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN: the language itself is made of English words, and so are the error messages and the documentation of every database. Learners who know a little English find that SQL reinforces it.

Mentors keep their sentences short, explain each new keyword in plain words and repeat when asked. You may answer however you can; the query on the screen is what matters.

English across Peru

Measured by EF's English Proficiency Index 2025, adults in Chiclayo average 474, which EF labels low; Lima averages 555, which it labels high.

If your English is closer to the first figure, the free class will tell you honestly whether to start now or to take a gentler course first. Many learners find that working with SQL in English is the practice that moves them up.

Class times

At what time are classes, from Peru?

At the time you choose. Peru keeps one time zone across the country and does not change its clocks.

Peru time and India time, examples only (no fixed slots)
Peru timeIndia timeGood for
06:4517:15Before the office
12:0022:30A lunch break
19:3006:00, next dayAfter work
20:3007:00, next dayLate learners

The whole of Peru uses zone America/Lima, five hours behind UTC and without daylight saving since 1994; India uses UTC plus 5:30. That leaves a constant gap of ten and a half hours.

Chiclayo, Lima, Arequipa and Iquitos all share Peru time, so the slot you book works anywhere in the country. You choose in your own clock and the mentor sees the India time.

Progress

How do you know your SQL is good enough?

Our milestones, each checked with a query you write and explain.

Six SQL milestones we use to place and track learners
StepWhat you can doHow it is shown
1. SelectFilter, sort and limit rows from one tableA query written from a spoken question
2. AggregateGroup, count and sum, and filter groups with HAVINGThe duplicate-day query from the lesson
3. JoinCombine tables without losing or doubling rowsRow counts before and after every join
4. CheckProve a key is unique and two columns agreeA short data-quality report
5. AnalyseUse window functions and subqueries for real questionsRunning totals and rankings, explained
6. ReportTurn queries into a dashboard or report others trustA report with sources, licence and checks

For learners

Milestone 4 is the lesson on this page. It is the one that makes colleagues trust your numbers.

If a month has twice as many rows as its neighbours, the data is telling you something before the total is.

For employers

Each milestone leaves a query file and a short write-up the learner can show.

Our certificate of completion is our own and is not a Peruvian university qualification.

More courses

Nine more courses around data

For analysts adding skills, for developers, and for teenagers. All live, all in English.

I

Analysts

18 and over

PE / AN / 01

Analytics without programming

Four months of spreadsheets and Power BI dashboards.

Open the syllabus

PE / AN / 02

Statistics and probability

The maths behind every report, without code.

Open the syllabus

PE / AN / 03

Data science

Python, machine learning and deep learning after SQL.

Open the syllabus
II

Developers

18 and over

PE / DEV / 01

Python masterclass

Python from zero, the partner of SQL in analysis.

Open the syllabus

PE / DEV / 02

Full stack development

Applications that read and write a database.

Open the syllabus

PE / DEV / 03

Automation with Python

Make the monthly report build itself, query to file.

Open the syllabus
III

Teenagers

Ages 13 to 18

PE / TEEN / 01

Python for teens

Programming from zero for secundaria students.

Open the syllabus

PE / TEEN / 02

Teen data science

For 14 to 18 year olds who know some Python.

Open the syllabus

PE / TEEN / 03

Backend for teens

Node, APIs and databases, from zero.

Open the syllabus

How it works

How live SQL classes run

Any day, any time, flexible: choose a batch, or for a very personalised plan choose 1-on-1 at the hour that suits your family.

Daytime

Peru mornings and lunchtimes fall in the Indian evening, an easy fit.

After work

A Peru evening is an Indian early morning, and mentors teach then too.

1-on-1

Your data, your questions, your hour.

Write the query

You type it; the mentor asks what it will return first.

Real tables

Open registers with real flaws, not perfect samples.

One mentor

Who knows your work and your weak spots.

Clear English

Short sentences, keywords explained, no rush.

Check, then report

Every total is checked a second way.

Class size

A group of fifteen to twenty, or a private class.

Student work

What our learners have built with data

A sample is below; the student labs show more.

NutriLife AI nutrition coach project screenshot

AI and ML

NutriLife

An AI nutrition coach that reads what you eat and works you toward a target.

by Bhavya · Open it

Misti AI chatbot for maths and coding screenshot

AI and ML

Misti

A chatbot that answers mathematics and programming questions, built and deployed by a student.

by Harshit · Open it

GuardianX AI internet safety assistant screenshot

AI and ML

GuardianX

An assistant that helps a young person recognise unsafe situations online.

by Vivaan · Open it

SkyCast weather forecast application screenshot

Web app

SkyCast

A weather forecasting site with live conditions for any location.

by Krish

Fees

Fees for the SQL and data analysis course

One month at a time. We charge in US dollars, card only; soles appear only once your bank has converted the charge at its own rate, so allow for a small difference on the statement.

Free first class

Free

no card required

  • A free first class
  • A first query on a real table
  • No card asked
Book it

Group batch

$100 USD

a month, eight live classes

  • Fifteen to twenty learners at a similar level
  • One mentor the whole way
  • Two live classes a week
  • Monthly, cancel any time
Start here

One to one

$150 USD

a month, eight live classes

  • You and one mentor
  • Your own data and questions
  • Days and times you choose
Enquire

What families say

Rated 4.9 across 547 Google reviews

Learners and parents on Google, quoted exactly.

★★★★★

"The one step solution for my son. Modern Age Coders make learning coding so simple that kids love it. The teachers explain complex concepts clearly with practical exercises and interactive content."

Ria Mukherjee

Parent

★★★★★

"Modern Age Coders has been a game-changer for me. I struggled to grasp IT concepts and coding before joining, but their classes transformed everything. I can now confidently write complex programs with ease."

Samriddha Mondal

Student

★★★★★

"One of the most wonderful education centres out there. Education is not limited to school syllabus but focuses on skill development."

Vansh Agarwal

Student

★★★★★

"My child Dhairya is really enjoying the Modern Age Coders classes. This is his first online class and he eagerly looks forward to it. I can already see his improvement, and the teachers are very cooperative."

Sonam Oswal

Parent of Dhairya

★★★★★

"Modern Age Coders have wonderful teachers who teach in a clear, easy and practical way. The teacher boosts students' confidence and inspires them to learn without hesitation."

Sonu Goyal

Parent

★★★★★

"I highly recommend this computer coding class! The teachers are incredibly knowledgeable and passionate about coding."

Ritu Kedia

Parent

Questions from Peru

SQL and data analysis in Peru: questions and answers

Are the classes in Spanish?

No. Classes are live, online and in English only. Mentors in India use short sentences, explain each keyword plainly and adapt to your pace and accent; SQL itself is written in English words.

Can I learn SQL from zero?

Yes. Both adult courses and the teen course start with a first SELECT. If you already use spreadsheets, you will recognise many ideas.

SQL or Python first for data analysis?

SQL first for most analysts, because it is how data is fetched from company systems; Python follows for cleaning, charts and automation. Our analysis course teaches both in that order.

Which database do you use?

MySQL in the database course, and SQLite in lessons like the one on this page because it comes with Python. The SQL you learn carries over to PostgreSQL, SQL Server and others with small differences.

Is the practice data Peruvian?

Partly. Lessons mix international datasets with Peruvian registers such as Chiclayo's waste-collection table, which the Municipalidad Provincial de Chiclayo publishes openly with attribution required (ODC-By).

What time are classes?

Any day, any time, flexible: choose a batch, or for a very personalised plan choose 1-on-1 at the hour that suits your family. Our mentors are ten and a half hours ahead, so a 19:30 class in Peru starts at 06:00 the next morning in India.

How many months until I am good at SQL?

Basic queries take a few weeks. Being trusted with real reporting, joins and data checks takes months; our analysis course runs 8 to 10 months and the MySQL course 7 to 8.

Is there an SQL course for teenagers?

Yes, MySQL for teens, ages 13 to 18, over 5 to 6 months, taught in teen-only groups.

How much does it cost?

The monthly fee is listed in the fees section in US dollars, which is how your card is charged; your bank converts to soles. From India the page shows rupees. The first class is free, with no card.

Is there a certificate at the end?

Pass the final exam and we issue our own certificate of completion. No Peruvian university or state body is involved in it, so the queries and reports you can show matter more.

Are you connected with the Municipalidad de Chiclayo?

No. The register is open data that anyone may use with credit, which we give; the findings here are our own analysis, and we have no link with the municipality.

Read next

Related pages

Further reading on data, for Peru.

Data science en inglés

The next step after SQL, explained in Spanish.

Programación para adultos

Learning to code beside a job in Peru.

Programación para universitarios

Courses alongside a Peruvian degree.

Coding and AI classes in Peru

Every Peru page in one index.

Data analytics course

Our analytics course, described in full.

How we teach

One live class, from start to end.

More pages for Peru

Part of the guide: Every Peru page

More guides: Coding and AI classes in Peru · En español: clases de programación en inglés · Start here: English-medium coding in Lima · By age and stage: AI and coding for professionals · Exams, olympiads and school holidays: IB computer science tutor · Guides to choosing: An English-taught option to Crack The Code · Regions of Peru: Amazonas region · Cities: Arequipa: coding for every age · Lima and Callao districts: Programación para niños en Ancón

Start here

Book a free SQL class

In the free class you write a first query on a real table with the mentor and talk about the data you work with. The mentor sees how you think about tables and how the English feels, then suggests a course.

Reading first is fine: see what happens in a class, or open any course syllabus.

WhatsApp us · +91 91233 66161 · connect@modernagecoders.com

Classes are live and online, in English only, with mentors in India. For a quick answer, message us on WhatsApp in English.

Free, with nothing to cancel.

Want a class sooner? Book a priority demo

A priority demo is a full class of about 45 to 60 minutes. After the class the mentor sends a written skill report and a personal learning roadmap on WhatsApp. If you enrol, the demo fee is adjusted against your first month's fee. Share your demo Order ID with us on WhatsApp and we take it off.

Book a priority demo

Keep exploring Modern Age Coders

Related courses and guides

Learn more

Free resources

From the blog

Start here

Free classPriority demoCall us