0% completed
Problem
Table: Appointments
+----------------+---------+
| Column Name | Type |
+----------------+---------+
| appointment_id | int |
| patient_id | int |
| doctor_id | int |
| appointment_date | date |
| status | enum |
+----------------+---------+
appointment_id is the primary key (column with unique values) for this table.
patient_id is the ID of the patient who has the appointment.
doctor_id is the ID of the doctor with whom the appointment is booked.
appointment_date is the date when the appointment is scheduled.
status is an ENUM (category) of type ('Completed', 'Cancelled', 'No-Show').
Problem Definition
Write a solution to find the number of times each patient missed their appointments (status = 'No-Show').
The result should include the patient_id
along with the count of missed appointments as no_shows
. If a patient has never missed an appointment, their record should not appear in the output.
Return the result table ordered by patient_id
in ascending order.
Example
Input:
Appointments table:
+----------------+------------+-----------+------------------+----------+
| appointment_id | patient_id | doctor_id | appointment_date | status |
+----------------+------------+-----------+------------------+----------+
| 1 | 1 | 101 | 2020-09-01 | Completed|
| 2 | 2 | 102 | 2020-09-01 | No-Show |
| 3 | 1 | 103 | 2020-09-02 | Cancelled|
| 4 | 3 | 101 | 2020-09-02 | No-Show |
| 5 | 2 | 103 | 2020-09-03 | No-Show |
| 6 | 3 | 102 | 2020-09-03 | Completed|
+----------------+------------+-----------+------------------+----------+
Output:
+------------+----------+
| patient_id | no_shows |
+------------+----------+
| 2 | 2 |
| 3 | 1 |
+------------+----------+
Try It Yourself
Solution
To solve this problem, we use SQL queries to analyze the Appointments
table and calculate the number of times each patient missed their appointments (where status
= 'No-Show').
The solution involves using the WHERE
clause to filter the Appointments
table records where the status
is 'No-Show'. The COUNT
function is then applied to count the number of 'No-Show' appointments for each patient_id
.
The results are grouped by patient_id
using the GROUP BY
clause to ensure that the count is calculated for each patient individually. Finally, the ORDER BY
clause is employed to sort the resulting records by patient_id
in ascending order, as specified in the problem statement.
SELECT patient_id, COUNT(*) AS no_shows FROM Appointments WHERE status = 'No-Show' GROUP BY patient_id ORDER BY patient_id ASC;
Let's break down the query step by step:
Step 1: Filtering 'No-Show' Appointments
We filter out the records in the Appointments
table where the status
column is 'No-Show'.
WHERE status = 'No-Show'
Step 2: Grouping by Patient ID
We group the results by patient_id
to calculate the count of 'No-Show' appointments for each patient.
GROUP BY patient_id
Step 3: Counting 'No-Show' Appointments for Each Patient
We apply the COUNT
function to count the number of 'No-Show' appointments for each patient.
COUNT(*) AS no_shows
Step 4: Ordering the Result
Finally, we order the results by patient_id
in ascending order to comply with the problem statement.
ORDER BY patient_id ASC
Final Output:
+------------+----------+ | patient_id | no_shows | +------------+----------+ | 2 | 2 | | 3 | 1 | +------------+----------+
This final result table lists each patient along with the number of appointments they missed, sorted by the patient ID.
.....
.....
.....
Table of Contents
Contents are not accessible
Contents are not accessible
Contents are not accessible
Contents are not accessible
Contents are not accessible