CREATE TABLE staff (staff_id DECIMAL, staff_address_id DECIMAL, nickname TEXT, first_name TEXT, middle_name TEXT, last_name TEXT, date_of_birth TIME, date_joined_staff TIME, date_left_staff TIME)
CREATE TABLE addresses (address_id DECIMAL, line_1_number_building TEXT, city TEXT, zip_postcode TEXT, state_province_county TEXT, country TEXT)
CREATE TABLE customer_payments (customer_id DECIMAL, datetime_payment TIME, payment_method_code TEXT, amount_payment DECIMAL)
CREATE TABLE lessons (lesson_id DECIMAL, customer_id DECIMAL, lesson_status_code TEXT, staff_id DECIMAL, vehicle_id DECIMAL, lesson_date TIME, lesson_time TEXT, price DECIMAL)
CREATE TABLE vehicles (vehicle_id DECIMAL, vehicle_details TEXT)
CREATE TABLE customers (customer_id DECIMAL, customer_address_id DECIMAL, customer_status_code TEXT, date_became_customer TIME, date_of_birth TIME, first_name TEXT, last_name TEXT, amount_outstanding DECIMAL, email_address TEXT, phone_number TEXT, cell_mobile_phone_number TEXT)

List the states which have between 2 to 4 staffs living there.
SELECT T1.state_province_county FROM addresses AS T1 JOIN staff AS T2 ON T1.address_id = T2.staff_address_id GROUP BY T1.state_province_county HAVING COUNT(*) BETWEEN 2 AND 4
SELECT "T1"."state_province_county" FROM "addresses" AS "T1" JOIN "staff" AS "T2" ON "T1"."address_id" = "T2"."staff_address_id" GROUP BY "T1"."state_province_county" HAVING COUNT(*) <= 4 AND COUNT(*) >= 2