sql >> Databáze >  >> RDS >> PostgreSQL

Funkce Postgres ratio_to_report

Nemusíte vůbec importovat konkrétní funkci. Ekvivalent Postgresql pomocí SUM v okně :

SELECT ID, val, 1.0 * val / NULLIF(SUM(val) OVER(),0) AS ratio_to_report
FROM tab

SqlFiddleDemo

Výstup:

╔═════╦══════╦═════════════════════╗
║ id  ║ val  ║   ratio_to_report   ║
╠═════╬══════╬═════════════════════╣
║  1  ║  10  ║ 0.16666666666666666 ║
║  2  ║  10  ║ 0.16666666666666666 ║
║  3  ║  20  ║ 0.3333333333333333  ║
║  4  ║  20  ║ 0.3333333333333333  ║
╚═════╩══════╩═════════════════════╝

Chcete-li simulovat PARTITION BY můžete použít:

SELECT ID, val, category,
    1.0 * val / NULLIF(SUM(val) OVER(PARTITION BY category),0) AS ratio_to_report
FROM tab

SqlFiddleDemo2

Výstup:

╔═════╦══════╦═══════════╦═════════════════╗
║ id  ║ val  ║ category  ║ ratio_to_report ║
╠═════╬══════╬═══════════╬═════════════════╣
║  1  ║  10  ║ a         ║ 0.25            ║
║  2  ║  10  ║ a         ║ 0.25            ║
║  3  ║  20  ║ a         ║ 0.5             ║
║  4  ║  20  ║ b         ║ 1               ║
╚═════╩══════╩═══════════╩═════════════════╝



  1. Pracují vaši zaměstnanci na dálku? Zde je návod, jak udržet svá data v bezpečí.

  2. Dotazování 2 tabulek v jednom dotazu

  3. Co znamená znak potrubí/veritcal bar v TSQL?

  4. Nxlog im_dbi nefunguje