what is ORDER BY useful for when i do PARTITION BY











up vote
0
down vote

favorite












i started to learn the PARTITION BY methode with agregate functions but i dont understand why should i use ORDER BY for in this query .
i want to SUM the total amount of sales in $ on "standart paper " in each year
this is my code :



    SELECT standard_amt_usd,
DATE_TRUNC('year', occurred_at) as year,
SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
ORDER BY occurred_at) AS running_total
FROM orders ;


the answers i get are correct but i still dont understand why in need to ese ORDER BY in here and what will happen if i wont use it ?
thank for the help:)










share|improve this question




























    up vote
    0
    down vote

    favorite












    i started to learn the PARTITION BY methode with agregate functions but i dont understand why should i use ORDER BY for in this query .
    i want to SUM the total amount of sales in $ on "standart paper " in each year
    this is my code :



        SELECT standard_amt_usd,
    DATE_TRUNC('year', occurred_at) as year,
    SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
    ORDER BY occurred_at) AS running_total
    FROM orders ;


    the answers i get are correct but i still dont understand why in need to ese ORDER BY in here and what will happen if i wont use it ?
    thank for the help:)










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      i started to learn the PARTITION BY methode with agregate functions but i dont understand why should i use ORDER BY for in this query .
      i want to SUM the total amount of sales in $ on "standart paper " in each year
      this is my code :



          SELECT standard_amt_usd,
      DATE_TRUNC('year', occurred_at) as year,
      SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
      ORDER BY occurred_at) AS running_total
      FROM orders ;


      the answers i get are correct but i still dont understand why in need to ese ORDER BY in here and what will happen if i wont use it ?
      thank for the help:)










      share|improve this question















      i started to learn the PARTITION BY methode with agregate functions but i dont understand why should i use ORDER BY for in this query .
      i want to SUM the total amount of sales in $ on "standart paper " in each year
      this is my code :



          SELECT standard_amt_usd,
      DATE_TRUNC('year', occurred_at) as year,
      SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
      ORDER BY occurred_at) AS running_total
      FROM orders ;


      the answers i get are correct but i still dont understand why in need to ese ORDER BY in here and what will happen if i wont use it ?
      thank for the help:)







      sql postgresql sql-order-by window-functions






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 11 at 12:48









      a_horse_with_no_name

      288k46434530




      288k46434530










      asked Nov 11 at 12:33









      Eliza Romanski

      504




      504
























          2 Answers
          2






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          Run this query:



          SELECT standard_amt_usd,
          DATE_TRUNC('year', occurred_at) as year,
          SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
          ORDER BY occurred_at
          ) AS running_total,
          SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
          ) AS group_total
          FROM orders ;


          You will probably see the difference right away. The ORDER BY says to do the summation "up to" this row. Without the ORDER BY, the summation is the same on all rows with the same PARTITION BY key.






          share|improve this answer




























            up vote
            0
            down vote













            ORDER BY has mainly two rules:




            1. To actually define how another feature works. This is true when
              using TOP, say, or within an OVER() partition function. It doesn't
              require sorting to occur, it just says "this definition only makes
              sense if we consider the rows in the result set to occur in a
              particular order - here's the one I want to use"

            2. To dictate the sort order of the result set. This is true when it's
              an ORDER BY clause on the outermost statement that is part of a
              particular query - not in a subquery, a CTE, an OVER() paritition
              function, etc.






            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',
              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%2f53248803%2fwhat-is-order-by-useful-for-when-i-do-partition-by%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              1
              down vote



              accepted










              Run this query:



              SELECT standard_amt_usd,
              DATE_TRUNC('year', occurred_at) as year,
              SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
              ORDER BY occurred_at
              ) AS running_total,
              SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
              ) AS group_total
              FROM orders ;


              You will probably see the difference right away. The ORDER BY says to do the summation "up to" this row. Without the ORDER BY, the summation is the same on all rows with the same PARTITION BY key.






              share|improve this answer

























                up vote
                1
                down vote



                accepted










                Run this query:



                SELECT standard_amt_usd,
                DATE_TRUNC('year', occurred_at) as year,
                SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                ORDER BY occurred_at
                ) AS running_total,
                SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                ) AS group_total
                FROM orders ;


                You will probably see the difference right away. The ORDER BY says to do the summation "up to" this row. Without the ORDER BY, the summation is the same on all rows with the same PARTITION BY key.






                share|improve this answer























                  up vote
                  1
                  down vote



                  accepted







                  up vote
                  1
                  down vote



                  accepted






                  Run this query:



                  SELECT standard_amt_usd,
                  DATE_TRUNC('year', occurred_at) as year,
                  SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                  ORDER BY occurred_at
                  ) AS running_total,
                  SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                  ) AS group_total
                  FROM orders ;


                  You will probably see the difference right away. The ORDER BY says to do the summation "up to" this row. Without the ORDER BY, the summation is the same on all rows with the same PARTITION BY key.






                  share|improve this answer












                  Run this query:



                  SELECT standard_amt_usd,
                  DATE_TRUNC('year', occurred_at) as year,
                  SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                  ORDER BY occurred_at
                  ) AS running_total,
                  SUM(standard_amt_usd) OVER (PARTITION BY DATE_TRUNC('year', occurred_at)
                  ) AS group_total
                  FROM orders ;


                  You will probably see the difference right away. The ORDER BY says to do the summation "up to" this row. Without the ORDER BY, the summation is the same on all rows with the same PARTITION BY key.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 11 at 12:37









                  Gordon Linoff

                  749k34285391




                  749k34285391
























                      up vote
                      0
                      down vote













                      ORDER BY has mainly two rules:




                      1. To actually define how another feature works. This is true when
                        using TOP, say, or within an OVER() partition function. It doesn't
                        require sorting to occur, it just says "this definition only makes
                        sense if we consider the rows in the result set to occur in a
                        particular order - here's the one I want to use"

                      2. To dictate the sort order of the result set. This is true when it's
                        an ORDER BY clause on the outermost statement that is part of a
                        particular query - not in a subquery, a CTE, an OVER() paritition
                        function, etc.






                      share|improve this answer

























                        up vote
                        0
                        down vote













                        ORDER BY has mainly two rules:




                        1. To actually define how another feature works. This is true when
                          using TOP, say, or within an OVER() partition function. It doesn't
                          require sorting to occur, it just says "this definition only makes
                          sense if we consider the rows in the result set to occur in a
                          particular order - here's the one I want to use"

                        2. To dictate the sort order of the result set. This is true when it's
                          an ORDER BY clause on the outermost statement that is part of a
                          particular query - not in a subquery, a CTE, an OVER() paritition
                          function, etc.






                        share|improve this answer























                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          ORDER BY has mainly two rules:




                          1. To actually define how another feature works. This is true when
                            using TOP, say, or within an OVER() partition function. It doesn't
                            require sorting to occur, it just says "this definition only makes
                            sense if we consider the rows in the result set to occur in a
                            particular order - here's the one I want to use"

                          2. To dictate the sort order of the result set. This is true when it's
                            an ORDER BY clause on the outermost statement that is part of a
                            particular query - not in a subquery, a CTE, an OVER() paritition
                            function, etc.






                          share|improve this answer












                          ORDER BY has mainly two rules:




                          1. To actually define how another feature works. This is true when
                            using TOP, say, or within an OVER() partition function. It doesn't
                            require sorting to occur, it just says "this definition only makes
                            sense if we consider the rows in the result set to occur in a
                            particular order - here's the one I want to use"

                          2. To dictate the sort order of the result set. This is true when it's
                            an ORDER BY clause on the outermost statement that is part of a
                            particular query - not in a subquery, a CTE, an OVER() paritition
                            function, etc.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Nov 11 at 12:37









                          Hamza Haider

                          604315




                          604315






























                              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.





                              Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                              Please pay close attention to the following guidance:


                              • 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%2f53248803%2fwhat-is-order-by-useful-for-when-i-do-partition-by%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







                              Popular posts from this blog

                              Xamarin.iOS Cant Deploy on Iphone

                              Glorious Revolution

                              Dulmage-Mendelsohn matrix decomposition in Python