SQL - Sum of multiple rows with considering to type










1















I have a table that looks something like the following:



+========================================================+
| Number | Date | Liter | Type |
+=========================================================+
| 1 | 2018-11-01 | 1.0 | A |
| 2 | 2018-11-01 | 2.0 | A |
| 3 | 2018-11-01 | 3.0 | B |
| 1 | 2018-11-02 | 4.0 | NULL |
| 2 | 2018-11-02 | 5.0 | B |
| 3 | 2018-11-02 | 6.0 | NULL |
| 1 | 2018-11-03 | 7.0 | B |
| 2 | 2018-11-03 | 8.0 | B |
| 3 | 2018-11-03 | 9.0 | NULL |
+---------------------------------------------------------+


And i need something this, with WHERE Date LIKE '2018-11-%'



+========================================================+
| Number | SumOfTypeA | SumOfTypeB | SumOfTypeNULL |
+=========================================================+
| 1 | 1.0 | 7.0 | 4.0 |
| 2 | 2.0 | 13.0 | NULL |
| 3 | NULL | 3.0 | 15.0 |
+---------------------------------------------------------+


Any ideas for do this query?










share|improve this question
























  • Consider handling issues of data display in application code

    – Strawberry
    Nov 13 '18 at 14:13















1















I have a table that looks something like the following:



+========================================================+
| Number | Date | Liter | Type |
+=========================================================+
| 1 | 2018-11-01 | 1.0 | A |
| 2 | 2018-11-01 | 2.0 | A |
| 3 | 2018-11-01 | 3.0 | B |
| 1 | 2018-11-02 | 4.0 | NULL |
| 2 | 2018-11-02 | 5.0 | B |
| 3 | 2018-11-02 | 6.0 | NULL |
| 1 | 2018-11-03 | 7.0 | B |
| 2 | 2018-11-03 | 8.0 | B |
| 3 | 2018-11-03 | 9.0 | NULL |
+---------------------------------------------------------+


And i need something this, with WHERE Date LIKE '2018-11-%'



+========================================================+
| Number | SumOfTypeA | SumOfTypeB | SumOfTypeNULL |
+=========================================================+
| 1 | 1.0 | 7.0 | 4.0 |
| 2 | 2.0 | 13.0 | NULL |
| 3 | NULL | 3.0 | 15.0 |
+---------------------------------------------------------+


Any ideas for do this query?










share|improve this question
























  • Consider handling issues of data display in application code

    – Strawberry
    Nov 13 '18 at 14:13













1












1








1


0






I have a table that looks something like the following:



+========================================================+
| Number | Date | Liter | Type |
+=========================================================+
| 1 | 2018-11-01 | 1.0 | A |
| 2 | 2018-11-01 | 2.0 | A |
| 3 | 2018-11-01 | 3.0 | B |
| 1 | 2018-11-02 | 4.0 | NULL |
| 2 | 2018-11-02 | 5.0 | B |
| 3 | 2018-11-02 | 6.0 | NULL |
| 1 | 2018-11-03 | 7.0 | B |
| 2 | 2018-11-03 | 8.0 | B |
| 3 | 2018-11-03 | 9.0 | NULL |
+---------------------------------------------------------+


And i need something this, with WHERE Date LIKE '2018-11-%'



+========================================================+
| Number | SumOfTypeA | SumOfTypeB | SumOfTypeNULL |
+=========================================================+
| 1 | 1.0 | 7.0 | 4.0 |
| 2 | 2.0 | 13.0 | NULL |
| 3 | NULL | 3.0 | 15.0 |
+---------------------------------------------------------+


Any ideas for do this query?










share|improve this question
















I have a table that looks something like the following:



+========================================================+
| Number | Date | Liter | Type |
+=========================================================+
| 1 | 2018-11-01 | 1.0 | A |
| 2 | 2018-11-01 | 2.0 | A |
| 3 | 2018-11-01 | 3.0 | B |
| 1 | 2018-11-02 | 4.0 | NULL |
| 2 | 2018-11-02 | 5.0 | B |
| 3 | 2018-11-02 | 6.0 | NULL |
| 1 | 2018-11-03 | 7.0 | B |
| 2 | 2018-11-03 | 8.0 | B |
| 3 | 2018-11-03 | 9.0 | NULL |
+---------------------------------------------------------+


And i need something this, with WHERE Date LIKE '2018-11-%'



+========================================================+
| Number | SumOfTypeA | SumOfTypeB | SumOfTypeNULL |
+=========================================================+
| 1 | 1.0 | 7.0 | 4.0 |
| 2 | 2.0 | 13.0 | NULL |
| 3 | NULL | 3.0 | 15.0 |
+---------------------------------------------------------+


Any ideas for do this query?







mysql sql






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 14:12









Strawberry

25.9k83149




25.9k83149










asked Nov 13 '18 at 14:10









impossibleimpossible

103




103












  • Consider handling issues of data display in application code

    – Strawberry
    Nov 13 '18 at 14:13

















  • Consider handling issues of data display in application code

    – Strawberry
    Nov 13 '18 at 14:13
















Consider handling issues of data display in application code

– Strawberry
Nov 13 '18 at 14:13





Consider handling issues of data display in application code

– Strawberry
Nov 13 '18 at 14:13












1 Answer
1






active

oldest

votes


















0














You can do conditional aggregation using SUM() and CASE..WHEN expressions:



SELECT
Number,
SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
FROM your_table
WHERE Date LIKE '2018-11-%'
GROUP BY Number





share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53282910%2fsql-sum-of-multiple-rows-with-considering-to-type%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    You can do conditional aggregation using SUM() and CASE..WHEN expressions:



    SELECT
    Number,
    SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
    SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
    SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
    FROM your_table
    WHERE Date LIKE '2018-11-%'
    GROUP BY Number





    share|improve this answer



























      0














      You can do conditional aggregation using SUM() and CASE..WHEN expressions:



      SELECT
      Number,
      SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
      SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
      SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
      FROM your_table
      WHERE Date LIKE '2018-11-%'
      GROUP BY Number





      share|improve this answer

























        0












        0








        0







        You can do conditional aggregation using SUM() and CASE..WHEN expressions:



        SELECT
        Number,
        SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
        SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
        SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
        FROM your_table
        WHERE Date LIKE '2018-11-%'
        GROUP BY Number





        share|improve this answer













        You can do conditional aggregation using SUM() and CASE..WHEN expressions:



        SELECT
        Number,
        SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
        SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
        SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
        FROM your_table
        WHERE Date LIKE '2018-11-%'
        GROUP BY Number






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 14:12









        Madhur BhaiyaMadhur Bhaiya

        19.6k62236




        19.6k62236



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53282910%2fsql-sum-of-multiple-rows-with-considering-to-type%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            Barbados

            How to read a connectionString WITH PROVIDER in .NET Core?

            Node.js Script on GitHub Pages or Amazon S3