sql >> Databáze >  >> RDS >> Sqlserver

Měli byste v SQL Serveru zvolit datové typy MONEY nebo DECIMAL(x,y)?

Nikdy byste neměli používat peníze. Není to přesné a je to čistý odpad; vždy používejte desítkové/číselné.

Spusťte toto, abyste viděli, co tím myslím:

DECLARE
    @mon1 MONEY,
    @mon2 MONEY,
    @mon3 MONEY,
    @mon4 MONEY,
    @num1 DECIMAL(19,4),
    @num2 DECIMAL(19,4),
    @num3 DECIMAL(19,4),
    @num4 DECIMAL(19,4)

    SELECT
    @mon1 = 100, @mon2 = 339, @mon3 = 10000,
    @num1 = 100, @num2 = 339, @num3 = 10000

    SET @mon4 = @mon1/@mon2*@mon3
    SET @num4 = @num1/@num2*@num3

    SELECT @mon4 AS moneyresult,
    @num4 AS numericresult

Výstup:2949,0000 2949,8525

Některým lidem, kteří řekli, že peníze penězi nerozdělujete:

Zde je jeden z mých dotazů na výpočet korelací a změna na peníze dává špatné výsledky.

select t1.index_id,t2.index_id,(avg(t1.monret*t2.monret)
    -(avg(t1.monret) * avg(t2.monret)))
            /((sqrt(avg(square(t1.monret)) - square(avg(t1.monret))))
            *(sqrt(avg(square(t2.monret)) - square(avg(t2.monret))))),
current_timestamp,@MaxDate
            from Table1 t1  join Table1 t2  on t1.Date = traDate
            group by t1.index_id,t2.index_id


  1. Jak zabalit PL SQL kód v Oracle?

  2. Seskupit řádky pomocí seskupení podle klauzule v MySQL

  3. Aktualizace tabulky MySQL na základě jiné hodnoty tabulky

  4. Ekvivalent MySQL HEX() a UNHEX() v Postgresu?