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?
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;
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.
Jo, det har du säkert rätt i. Nu fick jag lära mig något :-). Tack.