Friday, November 2, 2007

Using JDBC to take advantage of Database technology

abandoned the entity engine and Jumped into JDBC to do this.

  • Joins two views in a left outer join, meaning that it gets values from the first view even if there is no matching value in the second view.
  • Uses the COALESCE function of postgres to fill in default values (zero in this case) when values in the second view (the right hand view) are missing



SELECT query1.DIVID,TotalSub,COALESCE(TotalPassed,0) AS TotalPassed,COALESCE(100*(TotalPassed/TotalSub),0) as PERCENT
FROM
(SELECT DIVID, COUNT(t1.PARTY_ID) AS TotalSub
FROM (public.USERS t1 INNER JOIN public.TABLE2 sub ON t1.PARTY_ID = sub.PARTY_ID)
INNER JOIN public.TABLE3 t3 ON sub.PRODUCT_ID = t3.T_ID
WHERE (sub.from_date + (days_to_complete||' days')::INTERVAL > '2007-08-01' AND sub.product_id = 'testCourseOne')
GROUP BY t1.div_num) AS query1
LEFT OUTER JOIN
(SELECT DIVID, COUNT(t1.PARTY_ID) AS TotalPassed
FROM (public.USERS t1 INNER JOIN public.TABLE2 sub ON t1.PARTY_ID = sub.PARTY_ID)
INNER JOIN public.TABLE3 t3 ON sub.PRODUCT_ID = t3.T_ID
WHERE (sub.from_date + (days_to_complete||' days')::INTERVAL > '2007-08-01'
AND sub.product_id = 'testCourseOne' AND sub.completed_date IS NOT NULL)
GROUP BY t1.div_num) AS query2
ON query1.DIVID = query2.DIVID

No comments: