Skip to main content

🧪 QA Analyst SQL Toolkit

Written by Alex Merkin
Updated over 10 months 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?