2017-08-26 49 views
-1

我有兩個生成不同輸出的代碼片段。請任何人都可以提出我犯的錯誤?生成不同輸出的T-SQL查詢

第一代碼片段:

select 
    a.contest_id, 
    B.hacker_id, 
    B.name, 
    SUM(e.total_submissions)total_submissions, 
    SUM(e.total_accepted_submission) total_accepted_submission, 
    SUM(total_view)total_view, 
    SUM(total_unique_views) total_unique_views 
from 
    Contests b 
inner join 
    Colleges a on A.contest_id = B.contest_id 
left join 
    Challenges c on a.college_id = c.college_id 
left join 
    (select 
     challenge_id, 
     SUM(total_views) total_view, 
     sum(total_unique_views) total_unique_views 
    from 
     View_Stats 
    group by challenge_id) d on c.challenge_id = d.challenge_id 
left join 
    (select 
     challenge_id, 
     SUM(total_submissions) total_submissions, 
     SUM(total_accepted_submission) total_accepted_submission 
    from 
     Submission_Stats 
    group by 
     challenge_id) e on e.challenge_id = d.challenge_id 
group by 
    a.contest_id, b.hacker_id, B.name 
having 
    (sum(total_submissions) + 
    sum(total_accepted_submission) + 
    sum(total_view) + sum(total_unique_views)) <> 0 
order by 
    a.contest_ID 

第二代碼片段:

;WITH SUM_View_Stats AS 
(
    SELECT 
     challenge_id, 
     total_views = SUM(total_views), 
     total_unique_views = SUM(total_unique_views) 
    FROM 
     View_Stats 
    GROUP BY 
     challenge_id 
) 
, SUM_Submission_Stats AS 
(
    SELECT 
     challenge_id, 
     total_submissions = SUM(total_submissions), 
     total_accepted_submissions = SUM(total_accepted_submission) 
    FROM 
     Submission_Stats 
    GROUP BY 
     challenge_id 
) 
SELECT 
    con.contest_id, con.hacker_id, con.name, 
    SUM(total_submissions), 
    SUM(total_accepted_submissions), 
    SUM(total_views), 
    SUM(total_unique_views) 
FROM 
    Contests con 
INNER JOIN 
    Colleges col ON con.contest_id = col.contest_id 
INNER JOIN 
    Challenges cha ON cha.college_id = col.college_id 
LEFT JOIN 
    SUM_View_Stats vs ON vs.challenge_id = cha.challenge_id 
LEFT JOIN 
    SUM_Submission_Stats ss ON ss.challenge_id = cha.challenge_id 
GROUP BY 
    con.contest_id, con.hacker_id, con.name 
HAVING 
    (SUM(total_submissions) + 
    SUM(total_accepted_submissions) + 
    SUM(total_views) + 
    SUM(total_unique_views)) <> 0 
ORDER BY 
    con.contest_ID 

的問題是總提交的價值和total_accepted_submission

+1

你能分享一下什麼樣的區別? –

+1

1.您可以幫助我們並提供一些示例數據腳本。 2.你有什麼問題,不同的結果,錯誤異常,性能問題? – Fabio

回答

1

你必須在第一個例子LEFT JOIN ChallengesINNER JOIN Challenges在第二個。