Ich habe ein Problem mit einer SQL-Abfrage auf Postgresql. Diese Klausel select ist ein Beispiel aus einem Vortrag über Datenbanken:SQL SELECT FROM ... AS mit Datentypspezifizierer?
1 select t.CourseNr, t.StudentsPerCourse, g.StudentCount,
2 t.StudentsPerCourse/g.StudentCount as Marketshare
3 from (select CourseNr, count(*) as StudentsPerCourse
4 from taking
5 group by CourseNr) t,
6 (select count(*) as StudentCount
7 from Students) g;
Das Problem ist die Spalte Market in Zeile 2. Sowohl StudentsPerCourse und StudentCount vom Typ integer ist.
Wenn Sie dies in meiner Postgresql-Datenbank verwenden, wird die MarketsShare-Spalte als int-Typ ausgewertet, während ich hier ein float/numeric benötigen würde. Ich habe keine Möglichkeit gefunden, den Datentyp anzugeben, indem ich die Postgresql-Dokumentation zu SELECT-Klauseln durchsucht oder gegoogelt habe. Gibt es eine (vorzugsweise Standard SQL) Möglichkeit, den Spaltentyp anzugeben oder fehlt mir hier etwas?
Ja, das hat geholfen :) Danke! – VolkA
Alternative Casting-Syntax ist "SELECT mycolumn :: real FROM meinetable;" aber ich denke, die CAST() - Funktion ist portabler - Sie sollten wahrscheinlich dabei bleiben. – Neall
Ich mag diese Kurzschrift: Ich wünschte, es wäre besser unter verschiedenen Anbietern unterstützt. –