Способ работы операторов UPDATE состоит в том, что подзапрос оценивается для каждой строки в целевой таблице.Поскольку ваш подзапрос не имеет отношения к обновлению, он будет обработан один раз, а результат будет размещен в каждой строке.Чего вам не хватает, так это корреляции.Для каждой обновляемой строки вы хотите рассчитать количество для этого конкретного имени.Попробуйте что-то вроде:
UPDATE OPERATING_SYSTEM
SET App_Count =
(
SELECT COUNT(O.App_ID)
FROM OPERATING_SYSTEM AS OS, OPERATE AS O
WHERE OS.Name = O.Operating_System_Name
AND OS.Name = OPERATING_SYSTEM.Name
);