237.PASSENGER TRAVEL DATASET ANALYSIS USING PROC PRINT | PROC SORT | PROC FREQ | PROC MEANS | PROC SQL | PROC MACRO | DATA MANIPULATION AGGREGATION FILTERING GROUPING CUSTOM QUERIES IN SAS FOR REAL-WORLD TRANSPORTATION INSIGHTS
- Get link
- X
- Other Apps
PASSENGER TRAVEL DATASET ANALYSIS USING PROC PRINT | PROC SORT | PROC FREQ | PROC MEANS | PROC SQL | PROC MACRO | DATA MANIPULATION AGGREGATION FILTERING GROUPING CUSTOM QUERIES IN SAS FOR REAL-WORLD TRANSPORTATION INSIGHTS
/*A dataset of real-world data of passengers traveling in a bus*/
options nocenter;
1.Creation of dataset
data Bus_Travel;
length Name $20 Gender $6 StartPoint $15 EndPoint $15 ModeOfPayment $6
BusType $12 BookingDate $10 IsStudent $1;
input PassengerID Name $ Age Gender $ StartPoint $ EndPoint $
TicketPrice Distance_km TravelTime_min ModeOfPayment $ SeatNumber
BusType $ IsStudent $ BookingDate $;
datalines;
1 Rahul 29 Male Hyderabad Warangal 150 140 180 Cash 1 AC N 2025-07-01
2 Sneha 22 Female Hyderabad Vijayawada 300 280 300 UPI 5 Sleeper Y 2025-07-01
3 Anil 35 Male Warangal Guntur 250 250 270 Card 6 AC N 2025-07-02
4 Priya 18 Female Vijayawada Hyderabad 300 280 310 UPI 8 Sleeper Y 2025-07-02
5 John 45 Male Guntur Hyderabad 260 250 260 Cash 9 AC N 2025-07-03
6 Ramya 30 Female Hyderabad Kurnool 220 210 240 UPI 10 Semi-Sleeper Y 2025-07-03
7 Ahmed 40 Male Hyderabad Vizag 600 620 640 Card 12 Sleeper N 2025-07-04
8 Neha 27 Female Vizag Hyderabad 600 620 620 UPI 13 Sleeper Y 2025-07-04
9 Vishal 33 Male Warangal Kurnool 350 360 380 Card 15 Non-AC N 2025-07-05
10 Meena 25 Female Hyderabad Kurnool 220 210 240 UPI 16 AC N 2025-07-05
11 Ravi 50 Male Vijayawada Warangal 200 200 210 Cash 17 AC N 2025-07-06
12 Lakshmi 19 Female Guntur Kurnool 280 300 320 UPI 18 Sleeper Y 2025-07-06
13 Suresh 42 Male Hyderabad Warangal 150 140 180 Cash 19 Non-AC N 2025-07-07
14 Rani 21 Female Kurnool Vizag 650 680 700 Card 20 Sleeper Y 2025-07-07
15 Kishore 36 Male Warangal Vizag 580 600 620 UPI 21 Semi-Sleeper N 2025-07-08
16 Divya 23 Female Hyderabad Guntur 270 260 280 UPI 22 AC Y 2025-07-08
17 Harsha 28 Male Vijayawada Vizag 400 420 430 Cash 23 Sleeper N 2025-07-09
18 Anuja 24 Female Kurnool Hyderabad 220 210 230 Card 24 AC Y 2025-07-09
19 Satish 31 Male Hyderabad Vijayawada 300 280 300 Cash 25 Non-AC N 2025-07-10
20 Jyothi 20 Female Warangal Hyderabad 150 140 160 UPI 26 Sleeper Y 2025-07-10
21 Faheem 27 Male Hyderabad Guntur 270 260 270 UPI 27 Semi-Sleeper N 2025-07-11
22 Preeti 26 Female Guntur Vizag 520 550 570 Card 28 Sleeper Y 2025-07-11
23 Balu 41 Male Vizag Kurnool 620 640 660 UPI 29 AC N 2025-07-12
24 Kavya 22 Female Kurnool Vijayawada 300 310 320 Card 30 Sleeper Y 2025-07-12
25 Manoj 32 Male Hyderabad Warangal 150 140 180 UPI 31 AC N 2025-07-13
26 Deepa 29 Female Hyderabad Guntur 270 260 280 Cash 32 AC Y 2025-07-13
27 Nikhil 38 Male Vijayawada Kurnool 350 370 390 Card 33 Semi-Sleeper N 2025-07-14
28 Shruti 21 Female Guntur Hyderabad 260 250 260 UPI 34 Sleeper Y 2025-07-14
;
run;
proc print;run;
Output:
Obs | Name | Gender | StartPoint | EndPoint | ModeOfPayment | BusType | BookingDate | IsStudent | PassengerID | Age | TicketPrice | Distance_km | TravelTime_min | SeatNumber |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Rahul | Male | Hyderabad | Warangal | Cash | AC | 2025-07-01 | N | 1 | 29 | 150 | 140 | 180 | 1 |
2 | Sneha | Female | Hyderabad | Vijayawada | UPI | Sleeper | 2025-07-01 | Y | 2 | 22 | 300 | 280 | 300 | 5 |
3 | Anil | Male | Warangal | Guntur | Card | AC | 2025-07-02 | N | 3 | 35 | 250 | 250 | 270 | 6 |
4 | Priya | Female | Vijayawada | Hyderabad | UPI | Sleeper | 2025-07-02 | Y | 4 | 18 | 300 | 280 | 310 | 8 |
5 | John | Male | Guntur | Hyderabad | Cash | AC | 2025-07-03 | N | 5 | 45 | 260 | 250 | 260 | 9 |
6 | Ramya | Female | Hyderabad | Kurnool | UPI | Semi-Sleeper | 2025-07-03 | Y | 6 | 30 | 220 | 210 | 240 | 10 |
7 | Ahmed | Male | Hyderabad | Vizag | Card | Sleeper | 2025-07-04 | N | 7 | 40 | 600 | 620 | 640 | 12 |
8 | Neha | Female | Vizag | Hyderabad | UPI | Sleeper | 2025-07-04 | Y | 8 | 27 | 600 | 620 | 620 | 13 |
9 | Vishal | Male | Warangal | Kurnool | Card | Non-AC | 2025-07-05 | N | 9 | 33 | 350 | 360 | 380 | 15 |
10 | Meena | Female | Hyderabad | Kurnool | UPI | AC | 2025-07-05 | N | 10 | 25 | 220 | 210 | 240 | 16 |
11 | Ravi | Male | Vijayawada | Warangal | Cash | AC | 2025-07-06 | N | 11 | 50 | 200 | 200 | 210 | 17 |
12 | Lakshmi | Female | Guntur | Kurnool | UPI | Sleeper | 2025-07-06 | Y | 12 | 19 | 280 | 300 | 320 | 18 |
13 | Suresh | Male | Hyderabad | Warangal | Cash | Non-AC | 2025-07-07 | N | 13 | 42 | 150 | 140 | 180 | 19 |
14 | Rani | Female | Kurnool | Vizag | Card | Sleeper | 2025-07-07 | Y | 14 | 21 | 650 | 680 | 700 | 20 |
15 | Kishore | Male | Warangal | Vizag | UPI | Semi-Sleeper | 2025-07-08 | N | 15 | 36 | 580 | 600 | 620 | 21 |
16 | Divya | Female | Hyderabad | Guntur | UPI | AC | 2025-07-08 | Y | 16 | 23 | 270 | 260 | 280 | 22 |
17 | Harsha | Male | Vijayawada | Vizag | Cash | Sleeper | 2025-07-09 | N | 17 | 28 | 400 | 420 | 430 | 23 |
18 | Anuja | Female | Kurnool | Hyderabad | Card | AC | 2025-07-09 | Y | 18 | 24 | 220 | 210 | 230 | 24 |
19 | Satish | Male | Hyderabad | Vijayawada | Cash | Non-AC | 2025-07-10 | N | 19 | 31 | 300 | 280 | 300 | 25 |
20 | Jyothi | Female | Warangal | Hyderabad | UPI | Sleeper | 2025-07-10 | Y | 20 | 20 | 150 | 140 | 160 | 26 |
21 | Faheem | Male | Hyderabad | Guntur | UPI | Semi-Sleeper | 2025-07-11 | N | 21 | 27 | 270 | 260 | 270 | 27 |
22 | Preeti | Female | Guntur | Vizag | Card | Sleeper | 2025-07-11 | Y | 22 | 26 | 520 | 550 | 570 | 28 |
23 | Balu | Male | Vizag | Kurnool | UPI | AC | 2025-07-12 | N | 23 | 41 | 620 | 640 | 660 | 29 |
24 | Kavya | Female | Kurnool | Vijayawada | Card | Sleeper | 2025-07-12 | Y | 24 | 22 | 300 | 310 | 320 | 30 |
25 | Manoj | Male | Hyderabad | Warangal | UPI | AC | 2025-07-13 | N | 25 | 32 | 150 | 140 | 180 | 31 |
26 | Deepa | Female | Hyderabad | Guntur | Cash | AC | 2025-07-13 | Y | 26 | 29 | 270 | 260 | 280 | 32 |
27 | Nikhil | Male | Vijayawada | Kurnool | Card | Semi-Sleeper | 2025-07-14 | N | 27 | 38 | 350 | 370 | 390 | 33 |
28 | Shruti | Female | Guntur | Hyderabad | UPI | Sleeper | 2025-07-14 | Y | 28 | 21 | 260 | 250 | 260 | 34 |
2.PROC PRINT: To Display Data
title "Complete Bus Travel Dataset";
proc print data=Bus_Travel noobs;
run;
Output:
Complete Bus Travel Dataset |
Name | Gender | StartPoint | EndPoint | ModeOfPayment | BusType | BookingDate | IsStudent | PassengerID | Age | TicketPrice | Distance_km | TravelTime_min | SeatNumber |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Rahul | Male | Hyderabad | Warangal | Cash | AC | 2025-07-01 | N | 1 | 29 | 150 | 140 | 180 | 1 |
Sneha | Female | Hyderabad | Vijayawada | UPI | Sleeper | 2025-07-01 | Y | 2 | 22 | 300 | 280 | 300 | 5 |
Anil | Male | Warangal | Guntur | Card | AC | 2025-07-02 | N | 3 | 35 | 250 | 250 | 270 | 6 |
Priya | Female | Vijayawada | Hyderabad | UPI | Sleeper | 2025-07-02 | Y | 4 | 18 | 300 | 280 | 310 | 8 |
John | Male | Guntur | Hyderabad | Cash | AC | 2025-07-03 | N | 5 | 45 | 260 | 250 | 260 | 9 |
Ramya | Female | Hyderabad | Kurnool | UPI | Semi-Sleeper | 2025-07-03 | Y | 6 | 30 | 220 | 210 | 240 | 10 |
Ahmed | Male | Hyderabad | Vizag | Card | Sleeper | 2025-07-04 | N | 7 | 40 | 600 | 620 | 640 | 12 |
Neha | Female | Vizag | Hyderabad | UPI | Sleeper | 2025-07-04 | Y | 8 | 27 | 600 | 620 | 620 | 13 |
Vishal | Male | Warangal | Kurnool | Card | Non-AC | 2025-07-05 | N | 9 | 33 | 350 | 360 | 380 | 15 |
Meena | Female | Hyderabad | Kurnool | UPI | AC | 2025-07-05 | N | 10 | 25 | 220 | 210 | 240 | 16 |
Ravi | Male | Vijayawada | Warangal | Cash | AC | 2025-07-06 | N | 11 | 50 | 200 | 200 | 210 | 17 |
Lakshmi | Female | Guntur | Kurnool | UPI | Sleeper | 2025-07-06 | Y | 12 | 19 | 280 | 300 | 320 | 18 |
Suresh | Male | Hyderabad | Warangal | Cash | Non-AC | 2025-07-07 | N | 13 | 42 | 150 | 140 | 180 | 19 |
Rani | Female | Kurnool | Vizag | Card | Sleeper | 2025-07-07 | Y | 14 | 21 | 650 | 680 | 700 | 20 |
Kishore | Male | Warangal | Vizag | UPI | Semi-Sleeper | 2025-07-08 | N | 15 | 36 | 580 | 600 | 620 | 21 |
Divya | Female | Hyderabad | Guntur | UPI | AC | 2025-07-08 | Y | 16 | 23 | 270 | 260 | 280 | 22 |
Harsha | Male | Vijayawada | Vizag | Cash | Sleeper | 2025-07-09 | N | 17 | 28 | 400 | 420 | 430 | 23 |
Anuja | Female | Kurnool | Hyderabad | Card | AC | 2025-07-09 | Y | 18 | 24 | 220 | 210 | 230 | 24 |
Satish | Male | Hyderabad | Vijayawada | Cash | Non-AC | 2025-07-10 | N | 19 | 31 | 300 | 280 | 300 | 25 |
Jyothi | Female | Warangal | Hyderabad | UPI | Sleeper | 2025-07-10 | Y | 20 | 20 | 150 | 140 | 160 | 26 |
Faheem | Male | Hyderabad | Guntur | UPI | Semi-Sleeper | 2025-07-11 | N | 21 | 27 | 270 | 260 | 270 | 27 |
Preeti | Female | Guntur | Vizag | Card | Sleeper | 2025-07-11 | Y | 22 | 26 | 520 | 550 | 570 | 28 |
Balu | Male | Vizag | Kurnool | UPI | AC | 2025-07-12 | N | 23 | 41 | 620 | 640 | 660 | 29 |
Kavya | Female | Kurnool | Vijayawada | Card | Sleeper | 2025-07-12 | Y | 24 | 22 | 300 | 310 | 320 | 30 |
Manoj | Male | Hyderabad | Warangal | UPI | AC | 2025-07-13 | N | 25 | 32 | 150 | 140 | 180 | 31 |
Deepa | Female | Hyderabad | Guntur | Cash | AC | 2025-07-13 | Y | 26 | 29 | 270 | 260 | 280 | 32 |
Nikhil | Male | Vijayawada | Kurnool | Card | Semi-Sleeper | 2025-07-14 | N | 27 | 38 | 350 | 370 | 390 | 33 |
Shruti | Female | Guntur | Hyderabad | UPI | Sleeper | 2025-07-14 | Y | 28 | 21 | 260 | 250 | 260 | 34 |
3.PROC SORT: Sorting by Ticket Price (Descending)
proc sort data=Bus_Travel out=Sorted_Travel;
by descending TicketPrice;
run;
title "Passengers Sorted by Highest Ticket Price";
proc print data=Sorted_Travel;
run;
Output:
Passengers Sorted by Highest Ticket Price |
Obs | Name | Gender | StartPoint | EndPoint | ModeOfPayment | BusType | BookingDate | IsStudent | PassengerID | Age | TicketPrice | Distance_km | TravelTime_min | SeatNumber |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Rani | Female | Kurnool | Vizag | Card | Sleeper | 2025-07-07 | Y | 14 | 21 | 650 | 680 | 700 | 20 |
2 | Balu | Male | Vizag | Kurnool | UPI | AC | 2025-07-12 | N | 23 | 41 | 620 | 640 | 660 | 29 |
3 | Ahmed | Male | Hyderabad | Vizag | Card | Sleeper | 2025-07-04 | N | 7 | 40 | 600 | 620 | 640 | 12 |
4 | Neha | Female | Vizag | Hyderabad | UPI | Sleeper | 2025-07-04 | Y | 8 | 27 | 600 | 620 | 620 | 13 |
5 | Kishore | Male | Warangal | Vizag | UPI | Semi-Sleeper | 2025-07-08 | N | 15 | 36 | 580 | 600 | 620 | 21 |
6 | Preeti | Female | Guntur | Vizag | Card | Sleeper | 2025-07-11 | Y | 22 | 26 | 520 | 550 | 570 | 28 |
7 | Harsha | Male | Vijayawada | Vizag | Cash | Sleeper | 2025-07-09 | N | 17 | 28 | 400 | 420 | 430 | 23 |
8 | Vishal | Male | Warangal | Kurnool | Card | Non-AC | 2025-07-05 | N | 9 | 33 | 350 | 360 | 380 | 15 |
9 | Nikhil | Male | Vijayawada | Kurnool | Card | Semi-Sleeper | 2025-07-14 | N | 27 | 38 | 350 | 370 | 390 | 33 |
10 | Sneha | Female | Hyderabad | Vijayawada | UPI | Sleeper | 2025-07-01 | Y | 2 | 22 | 300 | 280 | 300 | 5 |
11 | Priya | Female | Vijayawada | Hyderabad | UPI | Sleeper | 2025-07-02 | Y | 4 | 18 | 300 | 280 | 310 | 8 |
12 | Satish | Male | Hyderabad | Vijayawada | Cash | Non-AC | 2025-07-10 | N | 19 | 31 | 300 | 280 | 300 | 25 |
13 | Kavya | Female | Kurnool | Vijayawada | Card | Sleeper | 2025-07-12 | Y | 24 | 22 | 300 | 310 | 320 | 30 |
14 | Lakshmi | Female | Guntur | Kurnool | UPI | Sleeper | 2025-07-06 | Y | 12 | 19 | 280 | 300 | 320 | 18 |
15 | Divya | Female | Hyderabad | Guntur | UPI | AC | 2025-07-08 | Y | 16 | 23 | 270 | 260 | 280 | 22 |
16 | Faheem | Male | Hyderabad | Guntur | UPI | Semi-Sleeper | 2025-07-11 | N | 21 | 27 | 270 | 260 | 270 | 27 |
17 | Deepa | Female | Hyderabad | Guntur | Cash | AC | 2025-07-13 | Y | 26 | 29 | 270 | 260 | 280 | 32 |
18 | John | Male | Guntur | Hyderabad | Cash | AC | 2025-07-03 | N | 5 | 45 | 260 | 250 | 260 | 9 |
19 | Shruti | Female | Guntur | Hyderabad | UPI | Sleeper | 2025-07-14 | Y | 28 | 21 | 260 | 250 | 260 | 34 |
20 | Anil | Male | Warangal | Guntur | Card | AC | 2025-07-02 | N | 3 | 35 | 250 | 250 | 270 | 6 |
21 | Ramya | Female | Hyderabad | Kurnool | UPI | Semi-Sleeper | 2025-07-03 | Y | 6 | 30 | 220 | 210 | 240 | 10 |
22 | Meena | Female | Hyderabad | Kurnool | UPI | AC | 2025-07-05 | N | 10 | 25 | 220 | 210 | 240 | 16 |
23 | Anuja | Female | Kurnool | Hyderabad | Card | AC | 2025-07-09 | Y | 18 | 24 | 220 | 210 | 230 | 24 |
24 | Ravi | Male | Vijayawada | Warangal | Cash | AC | 2025-07-06 | N | 11 | 50 | 200 | 200 | 210 | 17 |
25 | Rahul | Male | Hyderabad | Warangal | Cash | AC | 2025-07-01 | N | 1 | 29 | 150 | 140 | 180 | 1 |
26 | Suresh | Male | Hyderabad | Warangal | Cash | Non-AC | 2025-07-07 | N | 13 | 42 | 150 | 140 | 180 | 19 |
27 | Jyothi | Female | Warangal | Hyderabad | UPI | Sleeper | 2025-07-10 | Y | 20 | 20 | 150 | 140 | 160 | 26 |
28 | Manoj | Male | Hyderabad | Warangal | UPI | AC | 2025-07-13 | N | 25 | 32 | 150 | 140 | 180 | 31 |
4.PROC FREQ: Frequency of Gender and BusType
title "Gender Distribution";
proc freq data=Bus_Travel;
tables Gender;
run;
Output:
Gender Distribution |
Gender | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
Female | 14 | 50.00 | 14 | 50.00 |
Male | 14 | 50.00 | 28 | 100.00 |
title "Bus Type Distribution";
proc freq data=Bus_Travel;
tables BusType;
run;
Output:
Bus Type Distribution |
BusType | Frequency | Percent | Cumulative Frequency |
Cumulative Percent |
---|---|---|---|---|
AC | 10 | 35.71 | 10 | 35.71 |
Non-AC | 3 | 10.71 | 13 | 46.43 |
Semi-Sleeper | 4 | 14.29 | 17 | 60.71 |
Sleeper | 11 | 39.29 | 28 | 100.00 |
5.PROC MEANS: Summary Statistics
title "Summary of Age, Ticket Price, Distance and Travel Time";
proc means data=Bus_Travel n mean min max std;
var Age TicketPrice Distance_km TravelTime_min;
run;
Output:
Summary of Age, Ticket Price, Distance and Travel Time |
Variable | N | Mean | Minimum | Maximum | Std Dev | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
|
|
6.PROC SQL: Advanced Querying
a.Total Revenue Collected
proc sql;
title "Total Revenue Collected from All Tickets";
select sum(TicketPrice) as TotalRevenue from Bus_Travel;
quit;
Output:
Total Revenue Collected from All Tickets |
TotalRevenue |
---|
9190 |
b.Average Ticket Price per Bus Type
proc sql;
title "Average Ticket Price by Bus Type";
select BusType, avg(TicketPrice) as AvgPrice
from Bus_Travel
group by BusType;
quit;
Output:
Average Ticket Price by Bus Type |
BusType | AvgPrice |
---|---|
AC | 261 |
Non-AC | 266.6667 |
Semi-Sleeper | 355 |
Sleeper | 396.3636 |
c.Number of Students by Destination
proc sql;
title "Student Count by EndPoint";
select EndPoint, count(*) as StudentCount
from Bus_Travel
where IsStudent = 'Y'
group by EndPoint;
quit;
Output:
Student Count by EndPoint |
EndPoint | StudentCount |
---|---|
Guntur | 2 |
Hyderabad | 5 |
Kurnool | 2 |
Vijayawada | 2 |
Vizag | 2 |
7.MACROS in SAS
a.Define a Macro to Get All Passengers from a Specific StartPoint
%macro filter_by_start(start);
title "Passengers Traveling from &start";
proc print data=Bus_Travel;
where StartPoint = "&start";
run;
%mend;
%filter_by_start(Hyderabad);
Output:
Passengers Traveling from Hyderabad |
Obs | Name | Gender | StartPoint | EndPoint | ModeOfPayment | BusType | BookingDate | IsStudent | PassengerID | Age | TicketPrice | Distance_km | TravelTime_min | SeatNumber |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Rahul | Male | Hyderabad | Warangal | Cash | AC | 2025-07-01 | N | 1 | 29 | 150 | 140 | 180 | 1 |
2 | Sneha | Female | Hyderabad | Vijayawada | UPI | Sleeper | 2025-07-01 | Y | 2 | 22 | 300 | 280 | 300 | 5 |
6 | Ramya | Female | Hyderabad | Kurnool | UPI | Semi-Sleeper | 2025-07-03 | Y | 6 | 30 | 220 | 210 | 240 | 10 |
7 | Ahmed | Male | Hyderabad | Vizag | Card | Sleeper | 2025-07-04 | N | 7 | 40 | 600 | 620 | 640 | 12 |
10 | Meena | Female | Hyderabad | Kurnool | UPI | AC | 2025-07-05 | N | 10 | 25 | 220 | 210 | 240 | 16 |
13 | Suresh | Male | Hyderabad | Warangal | Cash | Non-AC | 2025-07-07 | N | 13 | 42 | 150 | 140 | 180 | 19 |
16 | Divya | Female | Hyderabad | Guntur | UPI | AC | 2025-07-08 | Y | 16 | 23 | 270 | 260 | 280 | 22 |
19 | Satish | Male | Hyderabad | Vijayawada | Cash | Non-AC | 2025-07-10 | N | 19 | 31 | 300 | 280 | 300 | 25 |
21 | Faheem | Male | Hyderabad | Guntur | UPI | Semi-Sleeper | 2025-07-11 | N | 21 | 27 | 270 | 260 | 270 | 27 |
25 | Manoj | Male | Hyderabad | Warangal | UPI | AC | 2025-07-13 | N | 25 | 32 | 150 | 140 | 180 | 31 |
26 | Deepa | Female | Hyderabad | Guntur | Cash | AC | 2025-07-13 | Y | 26 | 29 | 270 | 260 | 280 | 32 |
%filter_by_start(Warangal);
Output:
Passengers Traveling from Warangal |
Obs | Name | Gender | StartPoint | EndPoint | ModeOfPayment | BusType | BookingDate | IsStudent | PassengerID | Age | TicketPrice | Distance_km | TravelTime_min | SeatNumber |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | Anil | Male | Warangal | Guntur | Card | AC | 2025-07-02 | N | 3 | 35 | 250 | 250 | 270 | 6 |
9 | Vishal | Male | Warangal | Kurnool | Card | Non-AC | 2025-07-05 | N | 9 | 33 | 350 | 360 | 380 | 15 |
15 | Kishore | Male | Warangal | Vizag | UPI | Semi-Sleeper | 2025-07-08 | N | 15 | 36 | 580 | 600 | 620 | 21 |
20 | Jyothi | Female | Warangal | Hyderabad | UPI | Sleeper | 2025-07-10 | Y | 20 | 20 | 150 | 140 | 160 | 26 |
b.Macro to Calculate Total Revenue for a Bus Type
%macro bus_type_revenue(type);
proc sql;
title "Total Revenue for Bus Type: &type";
select BusType, sum(TicketPrice) as Revenue
from Bus_Travel
where BusType = "&type"
group by BusType;
quit;
%mend;
%bus_type_revenue(AC);
Output:
Total Revenue for Bus Type: AC |
BusType | Revenue |
---|---|
AC | 2610 |
%bus_type_revenue(Sleeper);
Total Revenue for Bus Type: Sleeper |
BusType | Revenue |
---|---|
Sleeper | 4360 |
- Get link
- X
- Other Apps
Comments
Post a Comment