Форум программистов, компьютерный форум, киберфорум
Наши страницы

PostgreSQL

Войти
Регистрация
Восстановить пароль
 
ikonokot
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 5
#1

совет новичку - посчитать к-во строк - PostgreSQL

11.12.2016, 15:41. Просмотров 354. Ответов 3
Метки нет (Все метки)

Добрый день, я совсем чайник в области sql...
Но вот очень надо написать такой скрипт:
Вот в этом скрипте нужно найти тот день, который "пересекает экватор выходных дней", то есть: знать номер дня, подходящего под это условие(holiday_flg=1) и сравнить его с максимальным номером выходного дня делёным на 2...
сейчас он считает пересечение экватора по всем дням, а надо только по выходным - я уже замучалась и не знаю, что делать(
Count и row_number считают просто все дни, как мне вычислить именно порядковый номер строки, подходящий под условие и сравнить его с максимальным ? если пишу сравнение с max(num) (вместо 183) - выдает, что нельзя использовать агрегатную функцию... Пожалуйста, помогите((

select year_no, calendar_dt,holiday_flg,ss
from
(select year_no, calendar_dt,holiday_flg,
count(holiday_flg) over(PARTITION by year_no order by calendar_dt) as num
from asql.calendar
) as ss
where (holiday_flg = 1) and num>183 and year_no= 2016
order by year_no

limit 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2016, 15:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос совет новичку - посчитать к-во строк (PostgreSQL):

Совет "Новичку" - Базы данных
на чем лучше - удобней написать свою БД. Подскажите конечный вариант т.к лучше потратить время на то что потребуется в будущем, Чем...

C++ совет новичку - Visual C++
Задачка Сложение строк к элементам строки с индексом K прибавить элементы строки с индексом L предварительно разделив их на...

Совет новичку - JavaScript
Посоветуйте хорошие книги/видеоуроки для изучения JavaScript'а с нуля, так чтобы действительно толково влиться в процесс

Совет новичку - Apache, htaccess
Добрый день! Заранее прошу прощения за неподобающий раздел для этой темы. Я решил научиться делать сайты, так как этого требует...

совет новичку - HTML, CSS
Доброго времени суток! Подскажите что нибудь из литературы по созданию сайтов, ее много но определится не могу) уже умею создавать...

Совет новичку! - PHP
Добрый вечер всем форумчанам. Заранее прошу прощения если написал не в тот раздел или рубрику сайта, но так как моя проблема косвенно...

3
grgdvo
586 / 517 / 150
Регистрация: 02.09.2012
Сообщений: 1,528
11.12.2016, 16:24 #2
Покажите описание вашей таблицы asql.calendar (CREATE TABLE ....) со смысловым описанием полей - что они означают по сути.
Также приведите хотя бы небольшую часть ваших данных, которые лежат в таблице, чтобы было понятно, что к чему.
Без этой информации непонятно, как исправить/переделать ваш запрос.
0
ikonokot
0 / 0 / 0
Регистрация: 11.12.2016
Сообщений: 5
11.12.2016, 16:46  [ТС] #3
бд содержит много полей, для меня интерес представляют 2 из них- calendar_dt - где записана дата и - holiday_flg- флаг выходного дня, если он равен 1- это выходной, если 0- то будний. задача найти и вывести день. пересекающий экватор выходных(включая праздничные дни). попыталась наваять код- пытаюсь найти наиболее близкую дату к экватору, но вылазит ошибка
select year_no,
sum(case when holiday_flg=1 then 1 else 0 end) as summm,
calendar_dt(case when min(abs(calendar_dt-summm)<5) )
from asql.calendar
where (holiday_flg=1)
group by year_no
order by year_no
0
Миниатюры
совет новичку - посчитать к-во строк   совет новичку - посчитать к-во строк  
grgdvo
586 / 517 / 150
Регистрация: 02.09.2012
Сообщений: 1,528
12.12.2016, 07:47 #4
А если так?
SQL
1
2
3
4
5
6
7
SELECT 
calendar_dt,
holiday_flg,
abs(SUM(CASE WHEN holiday_flg=1 THEN 1 ELSE 0 END) OVER (ROWS BETWEEN unbounded preceding AND CURRENT ROW) -
SUM(CASE WHEN holiday_flg=1 THEN 1 ELSE 0 END) OVER (ROWS BETWEEN CURRENT ROW AND unbounded following)) holiday_diff
FROM calendar
ORDER BY holiday_diff ASC LIMIT 1;
Для каждой даты считаем количество выходных до данного дня, включая сам день, если он выходной, и количество выходных после данного дня. Считаем абсолютную разницу между этими количествами. Сортируем в порядке возрастания разницы и оставляем первый произвольный элемент с минимальной разницей
0
12.12.2016, 07:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2016, 07:47
Привет! Вот еще темы с ответами:

Совет новичку(чайнику) - Java SE
Добрый вечер!) Решил заняться изучением java, пожалуйста подскажите хорошую книгу для изучение java с нуля. Спасибо

Нужен совет новичку - Python
Привет Всем! Вопрос по азам. Работаю на ubuntu. Установил pycharm, django, сервер работает когда вбиваю в терминал команды, то есть по...

Необходим совет новичку! - MS Access
Всем привет!!! Прошу помочь советом, я решил написать не большую базу двнных для компании. Собрал данные распределил по таблице Excel но...

Дайте совет новичку - DirectX
Я 3д графики вообще не учил поэтому хочу спросить есть разница между directx 7 и 11 или это как C и C++ то есть часть код может будь на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru