Я пытаюсь подсчитать по регионам количество файлов, которые НЕ содержат «важных» атрибутов, учитывая следующий набор данных:
files
------------------------------------
id | file | region
------------------------------------
1 | data.xml | eastern
2 | 2011-01-01-report.xml | eastern
3 | regional report.xml | western
4 | data.xml | central
5 | 2010 summary.xml | eastern
file_attributes
--------------------------------------------
file_id | attribute | value | importance
--------------------------------------------
1 | Patients | 18 | 0
1 | Deaths | 17 | 1
2 | Clients | 5 | 0
3 | Refunds | 12 | 1
5 | Deaths | 4 | 1
Я могу получить подсчет количествафайлы, которые имеют важные атрибуты, такие как:
SELECT
region
, COUNT(f.id) AS file_count
, COUNT(DISTINCT if(fa.importance = 1, f.id)) AS files_w_important_attr
, COUNT(DISTINCT if(fa.importance = 0, f.id)) AS files_w_unimportant_attr
FROM files AS f
LEFT JOIN object_attributes AS fa
ON f.id = fa.object_id
GROUP BY f.region
Это дает следующие результаты:
region | file_count | files_w_important_attr | files_w_unimportant_attr
------------------------------------------------------------------------
central | 1 | 0 | 0
eastern | 3 | 2 | 2
western | 1 | 1 | 0
У меня возникают проблемы с выяснением, как получить количество файлов без важных атрибутов,Обратите внимание, что я не пытаюсь получить количество файлов, которые имеют неважные атрибуты, что и дает 3-й столбец в приведенном выше запросе.Я хочу получить следующие результаты:
region | file_count | files_w_important_attr | files_w_NO_important_attr
------------------------------------------------------------------------
central | 1 | 0 | 1
eastern | 3 | 2 | 1
western | 1 | 1 | 0