TB16 behöver inte mer hjälp
TB16 182 – Fd. Medlem
Postad: 25 jul 2018 14:30

Matematiska funktioner (PostgreSQL vs SQLite)

Uppgift:

Given the following table 'decimals':

decimals table schema

  • id
  • number1
  • number2

Return a table with two columns (root, log) where the values in root are the square root of those provided in number1 and the values in log are changed to a base 10 logarithm from those in number2.


(Uppgiften är från codewars.com och jag kan välja att antingen lösa uppgiften med SQLite eller PostgreSQL. När jag valde SQLite för att lösa den så gick inte alla tester igenom, men när jag ändrade till PostgreSQL och använde samma query så klarade den alla tester. ) 


Min lösning (SQLite):

SELECT SQRT(number1) AS "root", LOG(number2) FROM decimals;


Felmeddelanden:

- Should return 2 columns
- Should return root column
- Should return log column

Fråga: 
Vad är det i min lösning som inte fungerar i SQLite men som fungerar i PostgreSQL? 

Lindehaven 820 – Lärare
Postad: 25 jul 2018 14:57

Har inte använt SQLite men kan läsa att den inte har funktioner som SQRT eller LOG. Det är möjligen/troligen därför som CodeWars' tester inte går igenom. Man kan dock utöka databas-motorn med funktioner skrivna i C. Det blir förstås svårt för någon av oss att göra på CodeWars' webb-sida :-(

Bra att du lyckades med PostgreSQL :-)  Hade dock trott att det behövde skrivas något ungefär så här:

SELECT SQRT(number1) AS "root", LOG(number2) AS "log" FROM decimals;

TB16 182 – Fd. Medlem
Postad: 25 jul 2018 16:54
Lindehaven skrev:

Har inte använt SQLite men kan läsa att den inte har funktioner som SQRT eller LOG. Det är möjligen/troligen därför som CodeWars' tester inte går igenom. Man kan dock utöka databas-motorn med funktioner skrivna i C. Det blir förstås svårt för någon av oss att göra på CodeWars' webb-sida :-(

Bra att du lyckades med PostgreSQL :-)  Hade dock trott att det behövde skrivas något ungefär så här:

SELECT SQRT(number1) AS "root", LOG(number2) AS "log" FROM decimals;

 Jaha okej då kanske det är där som skon klämmer :) Ja det trodde jag med, men av någon anledning så tycks kolumnen ändra namn utan att skriva AS "log". Dock så får jag ett fel om jag tar bort AS "root" då kolumnen verkar döpas om till sqrt vilket inte efterfrågades. Kolumnerna verkar döpas om automatiskt till funktionsnamnen som används på kolumnen.

Lindehaven 820 – Lärare
Postad: 26 jul 2018 08:42

Jo, det har du säkert rätt i. Nu fick jag lära mig något :-). Tack.

Svara
Close