powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Арифметическое деление
10 сообщений из 10, страница 1 из 1
Арифметическое деление
    #40045345
themrfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет

Помогите, пожалуйста. У меня есть два sql запроса и мне надо получить результат деления их значений
Код: sql
1.
select count (uid) from public.sec_user where elogin IS NOT NULL AND is_active <> false 


и
Код: sql
1.
select count (uid) from public.sec_user where elogin IS NOT NULL AND is_active <> false and datecontact >= CURRENT_DATE - INTERVAL '1 month'



Я попробовал что-то такое, но ничего не срабатывает
Код: sql
1.
select count (uid) case when (elogin Is Not Null And is_active <> false  then 1 else 0 end)/count (uid) case when (elogin IS NOT NULL AND is_active <> false and datecontact >= CURRENT_DATE - INTERVAL '1 month' then 1 else 0 end) from public.sec_user


Спасибо
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045369
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
themrfox,

вместо выдумывания несуществующего синтаксиса полезнее искать существующий. https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREGATES
count(...) filter(where ...)
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045377
themrfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij
themrfox,

вместо выдумывания несуществующего синтаксиса полезнее искать существующий. https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREGATES
count(...) filter(where ...)

Я смотрел документацию, если бы вы могли уточнить как верно, я был бы очень благодарен, sql я почти не знаю
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045439
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
themrfox
Melkij
themrfox,

вместо выдумывания несуществующего синтаксиса полезнее искать существующий. https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREGATES
count(...) filter(where ...)

Я смотрел документацию, если бы вы могли уточнить как верно, я был бы очень благодарен, sql я почти не знаю
ъ

Ооххх...
Код: sql
1.
2.
3.
4.
5.
select 
(count(uid) FILTER (WHERE elogin Is Not Null And is_active <> false))
/
(count(uid) FILTER (WHERE elogin IS NOT NULL AND is_active <> false and datecontact >= CURRENT_DATE - INTERVAL '1 month'))
from public.sec_user;



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045446
themrfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Большое спасибо, но так тоже не срабатывает
[img=]

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045449
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
themrfox,

1)за присылание скриншотов вместо текстов ошибки - буду банить скоро. Уважайте людей которые вам пытаются помочь.

2)это артефакты copy/paste я уже поправил запрос в ответе... попробуйте новую версию

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045459
themrfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,
Извините, пожалуйста, я не знал. Спасибо Вам за помощь, но по-отдельности
Код: sql
1.
select (count(uid) FILTER (WHERE elogin Is Not Null And is_active <> false)) from public.sec_user


выдает 4352
Отдельно
Код: sql
1.
select (count(uid) FILTER (WHERE elogin IS NOT NULL AND is_active <> false and datecontact >= CURRENT_DATE - INTERVAL '1 month')) from public.sec_user;

выдаёт 2919
А с деление выдаётся резутатат 1 :(
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045463
fte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
themrfox
Maxim Boguk,
Большое спасибо, но так тоже не срабатывает
[img=]

Модератор: Вложение удалено.


Очевидно автора топика на устраивает деление bigint на bigint, видимо ему нужно
Код: sql
1.
(count(uid) FILTER (WHERE elogin Is Not Null And is_active <> false))::numeric
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045480
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
themrfox
Maxim Boguk,
Извините, пожалуйста, я не знал. Спасибо Вам за помощь, но по-отдельности
Код: sql
1.
select (count(uid) FILTER (WHERE elogin Is Not Null And is_active <> false)) from public.sec_user


выдает 4352
Отдельно
Код: sql
1.
select (count(uid) FILTER (WHERE elogin IS NOT NULL AND is_active <> false and datecontact >= CURRENT_DATE - INTERVAL '1 month')) from public.sec_user;

выдаёт 2919
А с деление выдаётся резутатат 1 :(
'

А сколько должно выдавать?

mboguk@my-travel-laptop:~$ bc
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
4352/2919
1


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Арифметическое деление
    #40045481
themrfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk, fte

Все так и есть, проблема была с целочисленным типом деления, так все отлично работает, с использованием numeric
Спасибо вам огромное!!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Арифметическое деление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]