Расчет конечного дохода за двенадцать месяцев на PostgreSQL

Вы используете массив как объект, разница между getElementbyId и getElementsByClassName такова:

  • getElementbyId вернет вам объект.
  • getElementsByClassName вернет вам массив.

getElementsByClassName

Метод getElementsByClassName(classNames) принимает строку, содержащую неупорядоченный набор уникальных разделенных пробелами маркеры, представляющие классы. При вызове метод должен возвращать живой объект NodeList, содержащий все элементы документа, которые имеют все классы, указанные в этом аргументе, получив классы, разделив строку на пробелы. Если в аргументе нет токенов, тогда метод должен возвращать пустой NodeList.

blockquote>

https://www.w3.org/TR/2008/WD-html5 -20080610 / dom.html # getelementsbyclassname

getElementById

Метод getElementById () обращается к первому элементу с указанным id.

blockquote>

http://www.w3schools.com/jsref/met_doc_getelementbyid.asp

в вашем коде строки:

1- document.getElementsByClassName ('myElement'). Style.size = '100px';

blockquote>

НЕ будет работать, как ожидалось, потому что getElementByClassName вернет массив, и массив будет НЕ имеет свойство style, вы будете обращаться к каждому element, итерации их.

Вот почему функция getElementById работает на вас, эта функция вернет вам прямой объект, и поэтому вы сможет получить доступ к свойству style.

0
задан Lax Mandis 22 March 2019 в 18:31
поделиться

3 ответа

Требуется накопительная сумма:

select t.*,
       sum(revenue) over (order by yyyymm rows between 12 preceding and 1 preceding) as trailing_12_months_revenue
from t;

Это занимает последние 12 месяцев в данных (как написано). Если вы пропустите месяцы, это можно изменить для этого.

0
ответ дан Gordon Linoff 22 March 2019 в 18:31
поделиться

Я не знаю, поможет ли это вам или нет, но это будет подход для Microsoft Sql Server, за исключением 12-месячной части уравнения, что было бы немного работы в T-Sql, если дата хранится в этом формате, чтобы преобразовать ее в дату и выполнить где в течение этой даты.

CREATE TABLE #temp (yyyymm int, revenue int)

INSERT INTO #temp
(
    yyyymm,
    revenue
)
VALUES
(201701, 450), (201701, 600), (201702,350)

SELECT 
    yyyymm, 
    SUM(revenue) 
From #temp 
GROUP BY #temp.yyyymm 

DROP TABLE #temp
0
ответ дан dmoore1181 22 March 2019 в 18:31
поделиться

Простейшим способом является использование подвыбора (я назвал вашу таблицу foo):

select
    foo.*,
    (select sum(revenue) from
        foo ly
    where
        ly.yyyymm between foo.yyyymm - 100 and foo.yyyymm - 1
    ) as last_years_revenue
from foo;

Это дает следующий результат:

Ввод:

 yyyymm | revenue
--------+---------
 201701 |     450
 201701 |     600
 201702 |     350
 201601 |      45
 201601 |      60
 201602 |      35


 yyyymm | revenue | last_years_revenue
--------+---------+--------------------
 201701 |     450 |                140
 201701 |     600 |                140
 201702 |     350 |               1085
 201601 |      45 |               NULL
 201601 |      60 |               NULL
 201602 |      35 |                105
[ 116] Выручка 2016 года составляет 60 + 35 + 45 = 140.

Доход за 2017-02 гг. Составляет 450 + 600 + 35 = 1085.

0
ответ дан amphetamachine 22 March 2019 в 18:31
поделиться
Другие вопросы по тегам:

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