MySQL SUM in different ways -
मेरे पास दो टेबल हैं
user_raters:
| आईडी (इंट) | To_id (int) | मान (इंट) | बनाया_एट (तारीख समय) | 1 | 2 | 1 | 2009-03-01 00:00:00
संपादित करें: मैंने user_rater_id बदल दिया history_user_raters.user_rater_id
history_user_raters user_raters.id से संबंधित है:
| आईडी (इंट) | User_rater_id (int) | मान (इंट) | बनाया_एट (दिन-समय) | 1 | 1 | 1 | 2009-03-02 00:00:00 | 2 | 1 | 1 | 2009-03-02 00:00:00 | 3 | 1 | -1 | 2009-03-02 00:00:00 | 4 | 1 | 1 | 2009-03-03 00:00:00 | 5 | 1 | -1 | 2009-03-03 00:00:00 | 6 | 1 | -1 | 2009-03-03 00:00:00 | 7 | 1 | -1 | 2009-03-03 00:00:00
मैं history_user_raters से मानों का योग गिनना चाहता हूं क्योंकि यह user_raters से to_id से संबंधित है। क्वेरी से परिणाम होना चाहिए:
| वर्ष | महीने | दिन | कुल | नीचे | ऊपर | 2009 | 3 | 2 | 1 | 1 | 2 | 2009 | 3 | 3 | -2 | 3 | 1
मेरे पास एक क्वेरी है जो करीब है, लेकिन यह ऊपर और नीचे सही तरीके से नहीं गिना जा रहा है कुल सही है कुछ एक मदद कर सकते हैं मुझे क्वेरी या नई क्वेरी अप में सुधार करें और नीचे गणना करता है कि लिखने
मेरे वर्तमान क्वेरी:
का चयन वर्ष (history.created_at) `के रूप में year` , महीने (history.created_at) के रूप में `month`, (दिवस history.created_at) के रूप में` day`, SUM (history.value) के रूप में `total`, (पेट (योगफल (historydown.value)) का चयन करें` के रूप में user_raters` से raterdown अंदरूनी `शामिल हों history_user_raters` के रूप में historydown कहां raterdown.to_id = 2 और historydown.value = -1 और तिथि (historydown.created_at) history.created_at द्वारा समूह) के रूप में नीचे, (योगफल (historyup.value का चयन करें)` user_raters` से के रूप में raterup अंदरूनी `शामिल हों history_user_raters` historyup जहां raterup.to_id = 2 और historyup.value = 1 और तिथि (history.created_at) raterup.to_id द्वारा समूह) से` अंदरूनी user_raters` history_user_raters इतिहास के रूप में user_raters.id में शामिल होने के रूप में = इतिहास .user_rater_id कहां (user_raters.to_id = 2) दिनांक के आधार पर ग्रुप (history.created_at)
मैं इसे बहुत आसानी से देख सकता हूं (और खेद है कि मैं इस समय डेटा के साथ परीक्षण नहीं कर सकता), लेकिन मैं निम्नलिखित चाल के दो मामलों के अनुमान लगा रहा हूं जो सिर्फ जरूरी है
SELECT YEAR (history.created_at) के रूप में वर्ष, माह (इतिहास। श्रेया गया है) के रूप में महीने, दिन (history.created_at) दिन के रूप में, SUM (history.value) कुल के रूप में, SUM (मामले जब इतिहास .value & lt; 0 THEN history.value ELSE 0 END) नीचे के रूप में, SUM (मामला जब history.value & gt; 0 THEN इतिहास .value ELSE 0 END) ऊपर से 'user_raters' INNER को 'history_user_raters' में शामिल करें user_raters.id = इतिहास पर इतिहास User_rater_id WHERE (user_raters.to_id = 1) - या कुछ अन्य स्थिति ... ग्रुप द्वारा DATE (history.created_at)
Comments
Post a Comment