Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL
Darryl Reeves, Ph.D.
Assistant Professor, Long Island University - Brooklyn
name | inspection_type | grade | ...
--------------------------------+---------------------------------------+-------+-----
... | ... | ... | ...
EMPANADAS MONUMENTAL | Kiểm tra chu kỳ / Tái kiểm tra | B | ...
ALPHONSO'S PIZZERIA & TRATTORIA | Kiểm tra chu kỳ / Kiểm tra ban đầu | A | ...
THE SPARROW TAVERN | Kiểm tra chu kỳ / Kiểm tra ban đầu | A | ...
BURGER KING | Kiểm tra chu kỳ / Tái kiểm tra | A | ...
ASTORIA PIZZA | Kiểm tra chu kỳ / Tái kiểm tra | B | ...
... | ... | ... | ...
SELECT
inspection_type,
grade,
COUNT(*)
FROM
restaurant_inspection
WHERE
grade IS NOT NULL
GROUP BY
inspection_type,
grade
ORDER BY
inspection_type,
grade;
inspection_type | grade | count
--------------------------------------------------+-------+-------
Kiểm tra chu kỳ / Kiểm tra ban đầu | A | 1063
Kiểm tra chu kỳ / Tái kiểm tra | A | 723
Kiểm tra chu kỳ / Tái kiểm tra | B | 270
Kiểm tra chu kỳ / Tái kiểm tra | C | 93
Kiểm tra chu kỳ / Tái kiểm tra | Z | 29
Kiểm tra chu kỳ / Kiểm tra mở lại | C | 8
Kiểm tra chu kỳ / Kiểm tra mở lại | P | 26
Kiểm tra chu kỳ / Kiểm tra mở lại | Z | 3
Trước cấp phép (Không hoạt động) / Kiểm tra đầu | N | 4
Trước cấp phép (Hoạt động) / Kiểm tra đầu | A | 119
Trước cấp phép (Hoạt động) / Kiểm tra đầu | N | 17
Trước cấp phép (Hoạt động) / Tái kiểm tra | A | 79
Trước cấp phép (Hoạt động) / Tái kiểm tra | B | 49
Trước cấp phép (Hoạt động) / Tái kiểm tra | C | 13
Trước cấp phép (Hoạt động) / Tái kiểm tra | Z | 9
Trước cấp phép (Hoạt động) / Kiểm tra mở lại | C | 3
Trước cấp phép (Hoạt động) / Kiểm tra mở lại | P | 3
Trước cấp phép (Hoạt động) / Kiểm tra mở lại | Z | 1
inspection_type | A | B | C | N | P | Z
--------------------------------------------------+------+-----+----+----+----+----
Kiểm tra chu kỳ / Tái kiểm tra | 723 | 270 | 93 | 0 | 0 | 29
Kiểm tra chu kỳ / Kiểm tra ban đầu | 1063 | 0 | 0 | 0 | 0 | 0
Trước cấp phép (Hoạt động) / Kiểm tra mở lại | 0 | 0 | 3 | 0 | 3 | 1
Kiểm tra chu kỳ / Kiểm tra mở lại | 0 | 0 | 8 | 0 | 26 | 3
Trước cấp phép (Không hoạt động) / Kiểm tra đầu | 0 | 0 | 0 | 4 | 0 | 0
Trước cấp phép (Hoạt động) / Kiểm tra đầu | 119 | 0 | 0 | 17 | 0 | 0
Trước cấp phép (Hoạt động) / Tái kiểm tra | 79 | 49 | 13 | 0 | 0 | 9
WHERE đi kèmSELECT của truy vấnAVG(qty_sold) FILTER (WHERE qty_sold > 1) AGG_FUNC(expression) FILTER (WHERE condition)AGG_FUNC() - hàm tổng hợpSELECT
summary_column,
AGG(agg_column) FILTER (WHERE agg_column = PIVOT_VALUE_1) AS "pivot_column_1",
AGG(agg_column) FILTER (WHERE agg_column = PIVOT_VALUE_2) AS "pivot_column_2",
...
AGG(agg_column) FILTER (WHERE agg_column = PIVOT_VALUE_N) AS "pivot_column_N"
FROM
source_table
GROUP BY
summary_column;

SELECT
inspection_type,
COUNT(grade) FILTER (WHERE grade = 'A') AS "A",
COUNT(grade) FILTER (WHERE grade = 'B') AS "B",
COUNT(grade) FILTER (WHERE grade = 'C') AS "C",
COUNT(grade) FILTER (WHERE grade = 'N') AS "N",
COUNT(grade) FILTER (WHERE grade = 'P') AS "P",
COUNT(grade) FILTER (WHERE grade = 'Z') AS "Z"
FROM
restaurant_inspections
WHERE
grade IS NOT NULL
GROUP BY
inspection_type;
inspection_type | A | B | C | N | P | Z
--------------------------------------------------+------+-----+----+----+----+----
Kiểm tra chu kỳ / Tái kiểm tra | 723 | 270 | 93 | 0 | 0 | 29
Kiểm tra chu kỳ / Kiểm tra ban đầu | 1063 | 0 | 0 | 0 | 0 | 0
Trước cấp phép (Hoạt động) / Kiểm tra mở lại | 0 | 0 | 3 | 0 | 3 | 1
Kiểm tra chu kỳ / Kiểm tra mở lại | 0 | 0 | 8 | 0 | 26 | 3
Trước cấp phép (Không hoạt động) / Kiểm tra đầu | 0 | 0 | 0 | 4 | 0 | 0
Trước cấp phép (Hoạt động) / Kiểm tra đầu | 119 | 0 | 0 | 17 | 0 | 0
Trước cấp phép (Hoạt động) / Tái kiểm tra | 79 | 49 | 13 | 0 | 0 | 9
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL