|
@@ -107,14 +107,22 @@ BEGIN
|
|
|
END;
|
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
|
|
-select concat, count(*)
|
|
|
-from (
|
|
|
- select *, validate_measurement(p.temperature, p.pressure, p.wind_direction), concat(r.name, ' ', u.name
|
|
|
+WITH user_measurements AS (
|
|
|
+ SELECT
|
|
|
+ u.name AS "ФИО",
|
|
|
+ mr.name AS "Должность",
|
|
|
+ COUNT(b.id) AS "Количество измерений",
|
|
|
+ SUM(CASE WHEN validate_measurement(p.temperature, p.pressure, p.wind_direction) IS NULL THEN 1 ELSE 0 END) AS "Количество ошибочных данных"
|
|
|
+ FROM users u
|
|
|
+ JOIN ranks mr ON u.rank_id = mr.id
|
|
|
+ JOIN measurement_batch b ON u.id = b.user_id
|
|
|
+ JOIN measurement_params p ON p.measurement_batch_id = b.id
|
|
|
+ GROUP BY u.name, mr.name
|
|
|
)
|
|
|
-from measurement_params p
|
|
|
-join measurement_batch b on b.id = p.measurement_batch_id
|
|
|
-join users u on u.id = b.user_id
|
|
|
-join ranks r on r.id = u.rank_id)
|
|
|
-where validate_measurement is null
|
|
|
-group by concat
|
|
|
-order by count(*) desc;
|
|
|
+SELECT
|
|
|
+ "ФИО",
|
|
|
+ "Должность",
|
|
|
+ "Количество измерений",
|
|
|
+ "Количество ошибочных данных"
|
|
|
+FROM user_measurements
|
|
|
+ORDER BY "Количество ошибочных данных" DESC;
|