2 Commits 8a707c54dd ... 83e0381898

Author SHA1 Message Date
  Vsevolod Levitan 83e0381898 Правки дз 4 1 month ago
  Vsevolod Levitan 8a707c54dd Правки дз 4 1 month ago
1 changed files with 18 additions and 10 deletions
  1. 18 10
      homework/4.sql

+ 18 - 10
homework/4.sql

@@ -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;