Postgres SQL Join на ближайшем менее чем четверть

Для меня я просто добавил xml-код в файле POM.xml. И после того, как я dit ** щелкните правой кнопкой мыши в проекте -> Maven -> Update Project, и я проверил Force Update Snapshots / Releases ** и все, что сработало

    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/jstl/jstl -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
0
задан Thien 26 February 2019 в 12:06
поделиться

2 ответа

Попробуйте выполнить подзапрос:

select pt.*,
       (select qes.date
        from quarter_end_series qes
        where qes.date <= pt.date
        order by qes.date desc
       ) as quarter_end_date
from public_time pt;

Включить индекс на quarter_end_series(date).

Это экономит сортировку на большом количестве данных - что должно сделать это более производительным.

0
ответ дан Gordon Linoff 26 February 2019 в 12:06
поделиться

Я думаю, ваши кварталы установлены на каждый год. Например:

1995-12-31
1996-03-31
1996-06-30
1996-09-31
1996-12-31
.... and so on

Если это так, просто найдите ближайшую дату из фиксированных квартальных дат.

Если quarter_end_series не совпадают даты для каждого года. Вы можете попробовать подзапрос вместо соединения. Как ниже:

SELECT DISTINCT ON ("date")
"date", (SELECT r.public_date FROM public_time r ORDER BY abs(date_diff(x."date",r.public_date)) ASC limit 1) as public_date
FROM   quarter_end_series as x
where x.date >= '1995-12-31 00:00:00'
ORDER  BY x."date";
0
ответ дан Elbek 26 February 2019 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: