использует разные инструменты и получает некие результаты (от 1 до 10) я хочу сделать представление содержащее счетчик определенных результатов (например 3) userID, result3
я делаю так
CREATE VIEW counters AS select distinct(с.userID) AS userID, (SELECT count(1) WHERE c.result = 3) as result3 FROM competition c;
Но данные в представлении не правильные. Подскажите, где я ошибся?
Прямо не верится, что делаете... Можете показать \d+ (или \sv) получившегося view?
да, выражение для создания с ошибкой, правильно вот View "public.counters" Column | Type | Collation | Nullable | Default | Storage | Description ---------+-------------------+-----------+----------+---------+----------+------------- userid | character varying | | | | extended | result3 | bigint | | | | plain | View definition: SELECT DISTINCT c.userid, ( SELECT count(1) AS count WHERE c.result = 3 AND c.userid::text = c.userid::text) AS result3 FROM competition c;
Что-то странное вы делаете. Во первых view (обычные, а не materialized) ничего не облегчают и не ускоряют: это просто синтаксическая подстановка. А вот вторых, почему не просто SELECT userid,count(*) from competition where c.result = 3 group by userid;
спасибо, попробую!
Это же какая-то чушь получилась, правда... несмотря на то, что я так и не понял, что было нужно. ;) Просто совет: лучше не используйте SELECT DISTINT — почти все такие запросы получаются неправильными (GROUP BY нагляднее / понятнее / очевиднее).
Обсуждают сегодня