suchen

Heim  >  Fragen und Antworten  >  Hauptteil

So implementieren Sie einen abnehmenden Saldo mit MySQL

<p>So erstellen Sie eine degressive Saldoabfrage mit MySQL, um die Abschreibung in der Buchhaltung zu berechnen</p> <p>Zum Beispiel kostet die Ausrüstung 16.000 US-Dollar, hat eine erwartete Nutzungsdauer von 5 Jahren und eine Abschreibungsrate von 40 %. Abschreibung</p> <pre class="brush:php;toolbar:false;">Jahr Anfangsbuchwert Abschreibungsrate Abschreibungsbetrag Endbuchwert 1 16.000 40 % 6.400 9.600 2 9.600 40 % 3.840 5.760 3 5.760 40 % 2.304 3.456 4 3.456 40 % 1.382,40 2.073,60 5 2.073,60 40 % 829,44 1.244,16</vor> <p>Wie kann ich eine Funktion/Abfrage erstellen, um die oben genannten Ergebnisse zu erhalten? Vielen Dank</p>
P粉473363527P粉473363527451 Tage vor669

Antworte allen(1)Ich werde antworten

  • P粉917406009

    P粉9174060092023-09-02 14:19:13

    您可以使用递归CTE来得到您想要的结果。例如:

    with recursive
    p as (select 16000.00 as book_value, 0.4 as rate, 5 as total_years),
    y (year, book_value_start, rate, depreciation, book_value_end) as (
      select 1, book_value, rate,
        round(rate * book_value, 2),
        book_value - round(rate * book_value, 2)
      from p
     union all
      select
        y.year + 1, y.book_value_end, y.rate,
        round(y.rate * y.book_value_end, 2),
        y.book_value_end - round(y.rate * y.book_value_end, 2)
      from y
      cross join p
      where y.year < p.total_years
    )
    select * from y order by year

    结果:

    year  book_value_start  rate  depreciation  book_value_end 
     ----- ----------------- ----- ------------- -------------- 
     1     16000.00          0.4   6400.00       9600.00        
     2     9600.00           0.4   3840.00       5760.00        
     3     5760.00           0.4   2304.00       3456.00        
     4     3456.00           0.4   1382.40       2073.60        
     5     2073.60           0.4   829.44        1244.16

    DB Fiddle上查看运行示例。

    注意:所有三个参数在第二行中定义。如果您想要更改起始值、利率或年数,请在那里进行更改。

    Antwort
    0
  • StornierenAntwort