Ausgabe
Ich arbeite an der Wetterbeobachtungsstation 17 in HackerRank. Fragen Sie den westlichen Längengrad (LONG_W) ab, wobei der kleinste nördliche Breitengrad (LAT_N) in STATION größer als 38,7780 ist. Runden Sie Ihre Antwort auf 4 Dezimalstellen.
Tabelle: STATION Felder: ID, CITY, STATE, LAT_N, LONG_W wobei LAT_N der nördliche Breitengrad und LONG_W der westliche Längengrad ist.
Mein Code:
SELECT ROUND(LONG_W,4,0) AS low
FROM STATION
WHERE LAT_N = (SELECT MIN(LAT_N) FROM STATION WHERE LAT_N > 38.7780);
Ausgabe: 70.13780000 Die Antwort ist falsch. Ich habe diese Frage online nachgeschlagen und der Code sieht in anderen Antworten gleich aus. Ich verwende MS SQL Server. Der gleiche Code funktioniert gut auf MySQL
Lösung
Die ROUND
Funktion gibt den gleichen Datentyp, die gleiche Genauigkeit und Skalierung wie die Eingabe zurück:
select round(1.10045001, 4); -- 1.10050000
select round(1.10055001, 4); -- 1.10060000
Sie müssen CAST(... AS DECIMAL(..., 4))
eine Dezimalzahl mit genau 4 Ziffern erzeugen. Diese Funktion rundet den Wert mit demselben Algorithmus wie ROUND
bei der Konvertierung:
select cast(1.10045001 as decimal(18, 4)); -- 1.1005
select cast(1.10055001 as decimal(18, 4)); -- 1.1006
Beantwortet von – Salman A
Antwort geprüft von – Dawn Plyler (FixError Volunteer)