min and max by different conditions in one select












1















I have a list of offers and requests of goods in 1 table, and i need to find the max priced requests and min priced offers grouped by goods



There is not a big problem to get all requests with max price and all offers with min price, but i need to get offers min price for each request.



My table looks like



ItemName |  Type   | ItemPrice
-----------------------
item1 | offer | 100
item1 | offer | 80
item1 | request | 120
item2 | offer | 50
item2 | request | 30
item2 | request | 60


And as result i need



ItemName | OfferMinPrice | RequestMaxPrice
-----------------------
item1 | 80 | 120
item2 | 50 | 60









share|improve this question



























    1















    I have a list of offers and requests of goods in 1 table, and i need to find the max priced requests and min priced offers grouped by goods



    There is not a big problem to get all requests with max price and all offers with min price, but i need to get offers min price for each request.



    My table looks like



    ItemName |  Type   | ItemPrice
    -----------------------
    item1 | offer | 100
    item1 | offer | 80
    item1 | request | 120
    item2 | offer | 50
    item2 | request | 30
    item2 | request | 60


    And as result i need



    ItemName | OfferMinPrice | RequestMaxPrice
    -----------------------
    item1 | 80 | 120
    item2 | 50 | 60









    share|improve this question

























      1












      1








      1








      I have a list of offers and requests of goods in 1 table, and i need to find the max priced requests and min priced offers grouped by goods



      There is not a big problem to get all requests with max price and all offers with min price, but i need to get offers min price for each request.



      My table looks like



      ItemName |  Type   | ItemPrice
      -----------------------
      item1 | offer | 100
      item1 | offer | 80
      item1 | request | 120
      item2 | offer | 50
      item2 | request | 30
      item2 | request | 60


      And as result i need



      ItemName | OfferMinPrice | RequestMaxPrice
      -----------------------
      item1 | 80 | 120
      item2 | 50 | 60









      share|improve this question














      I have a list of offers and requests of goods in 1 table, and i need to find the max priced requests and min priced offers grouped by goods



      There is not a big problem to get all requests with max price and all offers with min price, but i need to get offers min price for each request.



      My table looks like



      ItemName |  Type   | ItemPrice
      -----------------------
      item1 | offer | 100
      item1 | offer | 80
      item1 | request | 120
      item2 | offer | 50
      item2 | request | 30
      item2 | request | 60


      And as result i need



      ItemName | OfferMinPrice | RequestMaxPrice
      -----------------------
      item1 | 80 | 120
      item2 | 50 | 60






      mysql sql






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 1 at 18:13









      D.TereliaD.Terelia

      83




      83
























          1 Answer
          1






          active

          oldest

          votes


















          2














          You can just use conditional aggregation:



          select itemname,
          min(case when type = 'offer' then itemprice end) as min_offerprice,
          max(case when type = 'request' then itemprice end) as max_requestprice,
          from t
          group by itemname;





          share|improve this answer
























          • Thanks a lot, it works perfect

            – D.Terelia
            Jan 1 at 18:35











          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%2f53997790%2fmin-and-max-by-different-conditions-in-one-select%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









          2














          You can just use conditional aggregation:



          select itemname,
          min(case when type = 'offer' then itemprice end) as min_offerprice,
          max(case when type = 'request' then itemprice end) as max_requestprice,
          from t
          group by itemname;





          share|improve this answer
























          • Thanks a lot, it works perfect

            – D.Terelia
            Jan 1 at 18:35
















          2














          You can just use conditional aggregation:



          select itemname,
          min(case when type = 'offer' then itemprice end) as min_offerprice,
          max(case when type = 'request' then itemprice end) as max_requestprice,
          from t
          group by itemname;





          share|improve this answer
























          • Thanks a lot, it works perfect

            – D.Terelia
            Jan 1 at 18:35














          2












          2








          2







          You can just use conditional aggregation:



          select itemname,
          min(case when type = 'offer' then itemprice end) as min_offerprice,
          max(case when type = 'request' then itemprice end) as max_requestprice,
          from t
          group by itemname;





          share|improve this answer













          You can just use conditional aggregation:



          select itemname,
          min(case when type = 'offer' then itemprice end) as min_offerprice,
          max(case when type = 'request' then itemprice end) as max_requestprice,
          from t
          group by itemname;






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 1 at 18:15









          Gordon LinoffGordon Linoff

          785k35310417




          785k35310417













          • Thanks a lot, it works perfect

            – D.Terelia
            Jan 1 at 18:35



















          • Thanks a lot, it works perfect

            – D.Terelia
            Jan 1 at 18:35

















          Thanks a lot, it works perfect

          – D.Terelia
          Jan 1 at 18:35





          Thanks a lot, it works perfect

          – D.Terelia
          Jan 1 at 18:35




















          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%2f53997790%2fmin-and-max-by-different-conditions-in-one-select%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

          Can a sorcerer learn a 5th-level spell early by creating spell slots using the Font of Magic feature?

          Does disintegrating a polymorphed enemy still kill it after the 2018 errata?

          A Topological Invariant for $pi_3(U(n))$