Skip to main content

🧪 QA Analyst SQL Toolkit

Alex Merkin avatar
Written by Alex Merkin
Updated over 2 weeks ago

Ensure process integrity and surface issues early using these Trino queries

This set helps QA professionals track trends, validate user inputs, detect out-of-range data, and highlight risk areas in the field data lifecycle.


1️⃣ Average Field Value by User

What it does:
Shows average numeric input (e.g., torque) per user for each QA field.

SELECT
f."title" AS "field_name",
s."userid",
u."displayname" AS "user_displayname",
AVG(s."valuenumber") AS "avg_value",
MIN(s."valuenumber") AS "min_value",
MAX(s."valuenumber") AS "max_value"
FROM
"sessioncustomfieldview" s
JOIN
"field" f
ON
s."fieldid" = f."_id"
LEFT JOIN
"usermodel" u
ON
s."userid" = u."_id"
WHERE
s."valuenumber" IS NOT NULL
GROUP BY
f."title", s."userid", u."displayname"
ORDER BY
"avg_value" DESC

2️⃣ Field Values with Min/Max Limits

What it does:
Displays all fields that have both a defined min and max value.

SELECT
f."_id" AS "field_id",
f."title",
f."min",
f."max"
FROM
"field" f
WHERE
f."min" IS NOT NULL
AND f."max" IS NOT NULL
ORDER BY
f."title"

3️⃣ Most Used QA Fields

What it does:
Ranks custom fields by how often they are used.

SELECT
f."title",
COUNT(*) AS "entry_count"
FROM
"sessioncustomfieldview" s
JOIN
"field" f
ON
s."fieldid" = f."_id"
GROUP BY
f."title"
ORDER BY
"entry_count" DESC

4️⃣ Last Input per Field

What it does:
When was each QA field last used?

SELECT
f."title",
MAX(s."date") AS "last_entry"
FROM
"sessioncustomfieldview" s
JOIN
"field" f
ON
s."fieldid" = f."_id"
GROUP BY
f."title"
ORDER BY
"last_entry" DESC

5️⃣ Weekly Trends for a QA Field

What it does:
Tracks average value over time (filterable per field).

SELECT
date_trunc ('week', s."date") AS "week",
f."title",
AVG(s."valuenumber") AS "weekly_avg"
FROM
"sessioncustomfieldview" s
JOIN "field" f ON s."fieldid" = f."_id"
WHERE
s."valuenumber" IS NOT NULL
GROUP BY
date_trunc ('week', s."date"),
f."title"
ORDER BY
"week" DESC

6️⃣ Form Submissions by User

What it does:
Count how many QA forms each user submitted.

SELECT
fd."createdby",
u."displayname" AS "user_displayname",
COUNT(*) AS "qa_forms"
FROM
"formdata" fd
LEFT JOIN
"usermodel" u
ON
fd."createdby" = u."_id"
GROUP BY
fd."createdby", u."displayname"
ORDER BY
"qa_forms" DESC

7️⃣ QA Input Distribution by Workflow

What it does:
How QA data varies across workflows (e.g., torque in Assembly vs. Repair).

SELECT
f."title" AS "field",
w."workflowname",
AVG(s."valuenumber") AS "avg_value"
FROM
"sessioncustomfieldview" s
JOIN
"field" f
ON
s."fieldid" = f."_id"
JOIN
"workflowsessionitem" w
ON
s."workflowsessionitemid" = w."_id"
WHERE
s."valuenumber" IS NOT NULL
GROUP BY
f."title", w."workflowname"
ORDER BY
"avg_value" DESC

8️⃣ Rework-Related Input Events

What it does:
Find QA entries tied to sessions with rework or resubmission (UNSIGN present).

SELECT DISTINCT
f."title",
s."userid",
u."displayname" AS "user_displayname",
s."valuenumber",
s."valuestring",
s."valuedate",
s."valueboolean",
s."date",
s."workflowsessionitemid" AS "session_id",
w."workorderid",
wo."workordernumber"
FROM
"sessioncustomfieldview" s
JOIN
"field" f
ON
s."fieldid" = f."_id"
JOIN
"workflowsessionitemrecord" r
ON
s."workflowsessionitemid" = r."workflowsessionitemid"
JOIN
"workflowsessionitem" w
ON
s."workflowsessionitemid" = w."_id"
LEFT JOIN
"workorder" wo
ON
w."workorderid" = wo."_id"
LEFT JOIN
"usermodel" u
ON
s."userid" = u."_id"
WHERE
r."reason" = 'UNSIGN'
ORDER BY
s."date" DESC

9️⃣ Missing QA Field Detection

What it does:
Find sessions where a required field was never entered.

SELECT
w."_id" AS "session_id",
f."title" AS "missing_field"
FROM
"field" f
JOIN
"workflowsessionitem" w
ON
f."required" = TRUE
WHERE NOT EXISTS (
SELECT 1
FROM "sessioncustomfieldview" s
WHERE s."fieldid" = f."_id"
AND s."workflowsessionitemid" = w."_id"
)
Did this answer your question?