SQL Tips: INT-muotoisen kentän jakolaskut

Jakaessa kahta INT-tyyppistä kenttää keskenään tulos on aina myös INT ja vieläpä niin, että tulosta ei pyöristetä, vaan se katkaistaan.

Esim. alla oleva SQL-lause palauttaa vastaukseksi 1.

SELECT 9 / 5

Jos taas lauseen jompikumpi arvo konvertoidaan desimaaliksi esimerkiksi näin

SELECT CAST(9 as float) / 5

tai näin

SELECT 9 * 1.0 / 5

palauttaa SQL vastaukseksi 1,8.

Samoin toimii sisäänrakennetut aggregointifunktiot, esim. AVG.

Esim.
Tässä yksinkertainen taulu, jossa int-tyyppisessä kentässä arvoja

alt text

Normaali AVG-funktio palauttaa keskiarvoksi 2.

alt text

Kun taas konvertoituna palauttaa näin

alt text

Desimaalin muuttamiseksi kannattaa valita kyselyyn sopiva suorituskykyisin keino

  • CAST
  • CONVERT
  • Kertominen 1.0:lla

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *