MIS executive to data analyst: move one daily report into SQL
In this article (6 sections)
Related programme: the Data Analytics with Generative AI course (3–4 months; ₹90,000 (inclusive of GST) · EMI from ₹4,000/month).
An MIS executive is already doing the reporting half of a data analyst's job: pulling data every morning, joining it with lookups and producing numbers managers act on. The move to data analyst is about two changes: rebuilding that work in SQL so it is repeatable and checkable, and adding the "why did this change" analysis that MIS reports usually leave to someone else. The clearest portfolio piece is one of your own reports, shown before and after.
The report as it exists today
Take a typical daily sales MIS. An ERP or DMS export lands in a sheet called raw. A second sheet, master, maps each distributor code to a region and sales officer. A third sheet, summary, is what goes out on email at 10 am.
Before, in Excel, the summary is built roughly like this:
raw!G2 =VLOOKUP(B2, master!$A:$C, 2, FALSE) region for each invoice line
raw!H2 =IFERROR(VLOOKUP(B2, master!$A:$C, 3, FALSE), "UNMAPPED")
summary!B2 =SUMIFS(raw!$E:$E, raw!$G:$G, $A2, raw!$D:$D, TODAY()-1)
summary!C2 =SUMIFS(raw!$E:$E, raw!$G:$G, $A2, raw!$D:$D, ">="&EOMONTH(TODAY(),-1)+1)It works, and you probably have macros that paste the export and refresh everything. The problems are ones you already know: a new distributor missing from master quietly drops out of the region totals (the first VLOOKUP returns #N/A, which SUMIFS then skips), someone sorts one column and not the other, and nobody else can tell how a number was produced.
The same report, after, in SQL
Here is the same logic on synthetic data. It runs in SQLite as written. The report date is fixed at 26 September 2026 so the result is reproducible.
-- Synthetic daily MIS data (hypothetical distributors and values)
CREATE TABLE master (dist_code TEXT PRIMARY KEY, region TEXT, sales_officer TEXT);
INSERT INTO master VALUES
('D101', 'North', 'Arjun'), ('D102', 'North', 'Arjun'),
('D201', 'West', 'Farah'), ('D202', 'West', 'Farah');
CREATE TABLE sales (invoice_no TEXT, dist_code TEXT, inv_date TEXT, value_inr INTEGER);
INSERT INTO sales VALUES
('INV-9001', 'D101', '2026-09-26', 42000),
('INV-9002', 'D102', '2026-09-26', 18500),
('INV-9003', 'D201', '2026-09-26', 31000),
('INV-9004', 'D305', '2026-09-26', 12000),
('INV-8950', 'D101', '2026-09-12', 55000),
('INV-8951', 'D202', '2026-09-15', 27000),
('INV-8801', 'D201', '2026-08-30', 64000);
WITH params AS (SELECT '2026-09-26' AS report_date, '2026-09-01' AS month_start),
tagged AS (
SELECT s.*, COALESCE(m.region, 'UNMAPPED') AS region
FROM sales s LEFT JOIN master m ON m.dist_code = s.dist_code
)
SELECT region,
SUM(CASE WHEN inv_date = p.report_date THEN value_inr ELSE 0 END) AS yesterday_inr,
SUM(CASE WHEN inv_date BETWEEN p.month_start AND p.report_date THEN value_inr ELSE 0 END) AS mtd_inr
FROM tagged, params p
GROUP BY region
ORDER BY region;The result has three rows: North with 60,500 yesterday and 1,15,500 month to date, West with 31,000 and 58,000, and an UNMAPPED row with 12,000 from distributor D305. The August invoice is correctly excluded from month to date.
What the before-and-after actually shows
Put these side by side in your portfolio, as a table rather than a claim:
| Question | Excel version | SQL version |
|---|---|---|
| What happens to a distributor missing from the master? | Its sales quietly drop out of the region totals | Appears as an UNMAPPED row that someone must fix |
| Can someone else reproduce today's number? | Only by repeating your paste and refresh steps | Rerun the query with the date parameter |
| How do you check the report is complete? | Eyeball the grand total | Compare SUM(value_inr) of the source with the report total |
| What happens when rows grow tenfold? | File slows, formulas recalculate for minutes | Same query, indexed table |
Add one reconciliation line to your write-up: total of sales for the report date equals the sum of yesterday_inr across all rows, including UNMAPPED. Interviewers notice when a candidate checks their own output.
The gap MIS work leaves
Most MIS roles stop at "what happened". A data analyst is expected to go one step further: West fell against last month; is that fewer orders, smaller orders, or one distributor who stopped buying? Practise that by adding a second query that breaks the change into order count and average order value per distributor, and write three sentences a regional manager could act on.
The other gaps are usually a proper BI tool (Power BI with a data model rather than a pasted table), basic statistics so you do not over-read a one-day dip, and presenting findings in a meeting instead of an email attachment. The Data Analyst programme at /courses/da covers SQL, Power BI, statistics and AI-assisted analysis over three to four months.
Which title to target first
With MIS experience, a realistic first title is data analyst, business analyst (reporting-focused) or BI analyst in the same industry you work in now, because your knowledge of distributors, schemes and month-end pressure is part of the value. Moving industry and function at the same time is harder than moving one of them.
What to say when asked "isn't MIS just data entry?"
"My job title says MIS, but for three years I have owned the daily and monthly sales numbers for four regions. I noticed that our Excel process could silently lose a new distributor's sales, so I rebuilt the daily report in SQL on sample data, with an unmapped bucket and a reconciliation check, and I can show you both versions. What I want to add now is the analysis after the report: explaining why a region moved, not only that it did. I already know which questions the regional managers ask, because they call me every morning."
If you want to see which analyst skills your resume already shows, run it through the free skill check. For a sense of how analyst and data scientist work differ, read data analytics vs data science.
Pankit Kumar has 10 years in Data Science & AI, building and shipping production systems in regulated pharma and clinical environments. He is a freelance trainer at Boston Institute of Analytics, AnalytixLabs and Scaler, and has taught this material to thousands of working professionals.
This article is part of our Data Analytics with Generative AI programme — 3–4 months. The full analyst stack — Excel, SQL, Power BI and Python pipelines — then a generative-AI layer you can prove is right.
Explore Data Analytics with Generative AI