SQL Impact Factor für 2 und 5 Jahre berechnen

lost_Wolf

Lt. Junior Grade
Registriert
Okt. 2011
Beiträge
498
Hallo liebe Gemeinde,

es ist mal wieder soweit, ich brauche einen Rat. Ich habe meine SQL-Kenntnisse rausgekramt und bin im Bereich der Bibliometrie unterwegs. Der Impact Factor (IF) berechnet sich aus den Zitatenz eines Jahresy x dividiert durch die veröffentlichten ArtikelQ der Jahre xy-1 und xy-2 im Journal. Sortiert werden soll das Ergebnis nach den Namen des Journals und später in einer Pivot in Excel. Hier noch die Formel vom IF(J;y):

(Zy)
------------------
(Qy-1 + Qy-2)

Hier nun der Code, wo ich meine Probleme habe.

Code:
SELECT Name, Year, COUNT(quote.idWork_quoted)/

(SELECT COUNT(idWork) FROM work WHERE (Year BETWEEN Year-1 AND Year-2) AND Year <> 0) AS "IF 2 Jahre" FROM work

JOIN quote ON work.idWork=quote.idWork_quoted
JOIN publish ON work.idWork=publish.idWork
JOIN journal ON publish.idJournal=journal.idJournal
GROUP BY Name

Ich bekomme als Ergebnise drei Spalten ( Name, Year, IF 2 Jahre ). Das Problem ist, der IF ist immer NULL. Der Fehler liegt vermutlich in der 3. Zeile versteckt.


Nachtrag: Sowas wie
Code:
(Year BETWEEN Year(getdate())-1)AND(Year(getdate())+1)
geht leider auch nicht.
 
Zuletzt bearbeitet:
Hey Morgen,

Probier mal Bitte aus, ob Du Ergebnisse bekommst, wenn Du auf Join und Ähnliches verzichtest. Also inetwa so:

DECLARE @Counter_idWork_quoted int;
DECLARE @Counter_idWork int;

set @Counter_idWork_quoted =COUNT(quote.idWork_quoted) --hier habe Ich das Select leider nicht ganz hinbekommen auf die Schnelle :(
set @Counter_idWork = SELECT COUNT(idWork) FROM work WHERE (Year BETWEEN Year-1 AND Year-2) AND Year <> 0

PRINT @Counter_idWork_quoted
PRINT @Counter_idWork
Print @Counter_idWork_quoted / @Counter_idWork

Nachtrag: Ich sehe gerade, dass Du kein direktes Jahr mitgibst. Kannst du mir Sagen wie die Spalte formatiert ist?
 
Zuletzt bearbeitet: (kleine Info wegen dem Select)
Zurück
Oben