Getting the values MIN and MAX of the table data

I have the table and the following records.
create table test_bank ( trans_id  number ,   trans_date   date ,    trans_amt    number ,      debit_credit_indicator varchar2(3) )

Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (1, TO_DATE('01/17/2013 08:02:44', 'MM/DD/YYYY HH24:MI:SS'), 1099, 'cr');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (1, TO_DATE('01/18/2013 08:03:02', 'MM/DD/YYYY HH24:MI:SS'), 800, 'cr');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (1, TO_DATE('01/19/2013 08:03:18', 'MM/DD/YYYY HH24:MI:SS'), 500, 'db');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (1, TO_DATE('01/20/2013 08:03:36', 'MM/DD/YYYY HH24:MI:SS'), 200, 'cr');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (2, TO_DATE('01/22/2013 08:04:01', 'MM/DD/YYYY HH24:MI:SS'), 400, 'db');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (2, TO_DATE('01/23/2013 08:04:16', 'MM/DD/YYYY HH24:MI:SS'), 345, 'cr');
Insert into TEST_BANK
   (TRANS_ID, TRANS_DATE, TRANS_AMT, DEBIT_CREDIT_INDICATOR)
 Values
   (2, TO_DATE('01/24/2013 08:04:33', 'MM/DD/YYYY HH24:MI:SS'), 600, 'db');
COMMIT;
I need to get the highest and lowest credit / debit amount for each trans_id.
I tried the SQL query below. Could you please let me know if a better solution.
select distinct * from (
select trans_id , case when debit_credit_indicator ='db' then  max(trans_amt) over (partition by trans_id,debit_credit_indicator )
                             when  debit_credit_indicator ='cr' then  max(trans_amt) over (partition by trans_id,debit_credit_indicator )
                             else null end trans_amt , debit_credit_indicator 
 from test_bank  
 union
 select trans_id , case when debit_credit_indicator ='db' then  min(trans_amt) over (partition by trans_id,debit_credit_indicator )
                             when  debit_credit_indicator ='cr' then  min(trans_amt) over (partition by trans_id,debit_credit_indicator )
                             else null end trans_amt , debit_credit_indicator 
 from test_bank   )
 order by trans_id
Thank you

Hello

to get the answer, we need to know what is your expected results (showing an example).

I don't know if this is appropriate for your needs:

  SELECT trans_id, debit_credit_indicator, MAX (trans_amt) trans_amt, 'MAX' min_max
    FROM test_bank
GROUP BY trans_id, debit_credit_indicator
UNION ALL
  SELECT trans_id, debit_credit_indicator, MIN (trans_amt)trans_amt, 'MIN' min_max
    FROM test_bank
GROUP BY trans_id, debit_credit_indicator
ORDER BY trans_id, debit_credit_indicator, min_max DESC;

  TRANS_ID DEBIT_CREDIT_INDICATOR  TRANS_AMT MIN_MAX
---------- ---------------------- ---------- -------
         1 cr                            200 MIN
         1 cr                           1099 MAX
         1 db                            500 MIN
         1 db                            500 MAX
         2 cr                            345 MIN
         2 cr                            345 MAX
         2 db                            400 MIN
         2 db                            600 MAX    

Kind regards.
Al

Tags: Database

Similar Questions

  • Min and Max on a table

    Hello. I want to make a program where I want to generate a sine and take only the monotonous positive part.

    So I thought to find the min and max of the function index and make a program like the one attached.

    As you can see that if you set the frequency to 10 Hz, it works fine... the problem is when you change the frequency such as 20 or 50 H.. t seems that it is not find the min and max correctly.

    Can you suggest me some tips?

    Thank you

    s.turino84 wrote:

    and take only positive part monotonous.

    This means that the derivative is positive.  So, make a derivative.  If the derivative is greater than 0 keep the present value, or the value 0.

  • the min and MAX values maintain their good values tia sal22

    the min and MAX values maintain their good values tia sal22

    Hi all

    I have problems a little value to stay in their correct min and max values min and max.
    Continue to change their values (up and down) trying to get the max value to only display the maximum value at a given time and the same for the min value.  I looked at the examples max and min and it seems that it should be in a while loop
    http://forums.NI.com/NI/board/message?board.ID=170&thread.ID=359822

    but I would add another while loop and if so put it in the loop for? or is there a better way to do it.

    TIA sal22

    Hi sal22,

    I thought it was just one example you found somewhere, because it is called red rooster. See the attached example.

    Mike

  • Help the query to list all the days between MIN and MAX date in a table

    Hello

    Sorry, this may have already responded earlier, but I really struggled to find a previous response with the new provision of the RTO.

    In a DB 11 g, I date MIN and MAX in a table:

    {code}

    SELECT MIN (process_date) start_date, MAX (process_date) end_date FROM my_table;

    {code}

    I would get every day between these 2 dates. I mean even is there is no record in the table for a date.

    Is this possible?

    Thanks in advance,

    Olivier

    Hello

    Do you mean something like this?

    ranit@XE11GR2>> ed
    Wrote file c:\rb\1.sql
    
      1  with xx as
      2  (
      3      select
      4     to_date('05-06-2013','dd-mm-yyyy') min_d,
      5     to_date('20-06-2013','dd-mm-yyyy') max_d
      6      from dual
      7  )
      8  --
      9  -- end of test data
     10  --
     11  select
     12     min_d + level date_x
     13  from xx
     14* connect by level<=(max_d-min_d)
    ranit@XE11GR2>> /
    
    DATE_X
    -------------------
    06-06-2013 00:00:00
    07-06-2013 00:00:00
    08-06-2013 00:00:00
    09-06-2013 00:00:00
    10-06-2013 00:00:00
    11-06-2013 00:00:00
    12-06-2013 00:00:00
    13-06-2013 00:00:00
    14-06-2013 00:00:00
    15-06-2013 00:00:00
    16-06-2013 00:00:00
    17-06-2013 00:00:00
    18-06-2013 00:00:00
    19-06-2013 00:00:00
    20-06-2013 00:00:00
    
    15 rows selected.
    
  • Delete the min and max labels on chart axis markers

    Hello

    Is it possible to remove the min and max labels on chart axis markers? For example, see the screenshot below. Can I remove the numbers circled in green without changing the range of the axis? In some cases (like this one), the presence of the min and max number of cases other marker values to not be displayed (red line). I am aware that "10" is displayed if I enlarge the graph, but this isn't an option for my application. FYI - the screenshot is from the side before the attached VI.

    Thanks for any help,

    Kind regards

    Stu

    You can't delete them because they are the main features to be able to set the max and min on the graph of the Panel before if you use no-AutoScaling.

  • Taskbar and min and max do not show on the homepage and e-mail

    When cleaning key board, the taskbar, and the top part of the page containing the min and max symbols disapperared.  How can I restore them?

    Hello

    I suggest you to try the steps below and check if it helps.

    (a) open Internet Explorer by pressing the button of the window of your keyboard, then clicking on Internet Explorer.

    (b) move your cursor to the top right and click the Tools button, and then click file.

    (c) uncheck the option full screen .

    You can also press F11 on your keyboard, which would help you to get to the normal screen.

    Hope this information is useful.

  • Grouping and then find the min and max

    DROP TABLE purge of y;

    CREATE TABLE y
    (
    ID NUMBER (10),
    START_DATE_TIME NUMBER (15),
    END_DATE_TIME NUMBER (15)
    );

    INSERT INTO y VALUES (1, 20140602164819, 20140606140851);
    INSERT INTO y VALUES (1, 20140827141743, 20140827142131);
    INSERT INTO y VALUES (1, 20140827141744, 20140827141835);
    INSERT INTO y VALUES (1, 20140827141744, 20140827142131);
    INSERT INTO y VALUES (1, 20140827141944, 20140827142131);
    INSERT INTO y VALUES (1, 20140827141944, 20140924142131);
    INSERT INTO y VALUES (1, 20140927141944, 20141027142131);
    INSERT INTO y VALUES (2, 20140602164819, 20140606140851);
    INSERT INTO y VALUES (2, 20140827141743, 20140827142131);
    INSERT INTO y VALUES (2, 20140827141744, 20140827141835);
    INSERT INTO y VALUES (2, 20140827141744, 20140827142131);
    INSERT INTO y VALUES (2, 20140827141944, 20140827142131);
    INSERT INTO y VALUES (2, 20140827141944, 20140924142131);
    INSERT INTO y VALUES (2, 20140927141944, 20141027142131);

    COMMIT;

    Select
    *
    Of
    There
    order by 2, 3;

    out necessary: when the output of the table are sorted by start_date_time and end_date_time in ascending order.
    and when the value of for a particular id start_date_time is located between the
    another set of values start_date_time and end_date_time for the same id then min (start_date_time) and max (end_date_time) is the desired output.

    and if there is no overlap then (start_date_time) min and max (end_date_time) is the output desired.

    and for each line of the output in ascending order of line number order addd;

    Example output is in the output table named

    drop table output is serving;

    create an output table
    (
    ID NUMBER (10),
    START_DATE_TIME NUMBER (15),
    END_DATE_TIME NUMBER (15),
    ROW_NUMBER NUMBER (10)
    );


    Values to INSERT OUTPUT (1, 20140602164819, 20140606140851, 1);
    Values to INSERT OUTPUT (1, 20140827141743, 20140924142131, 2);
    Values to INSERT OUTPUT (1, 20140927141944, 20141027142131, 3);
    Values to INSERT OUTPUT (2, 20140602164819, 20140606140851, 1);
    Values to INSERT OUTPUT (2, 20140827141743, 20140924142131, 2);
    Values to INSERT OUTPUT (2, 20140927141944, 20141027142131, 3);

    COMMIT;

    SELECT
    *
    Of
    output
    ORDER BY 1,2,3,4;

    Thank you

    SQL_Novice

    Hello

    Your postal code.  It is difficult to tell what you're doing wrong without knowing what you are doing.

    user6166680 wrote:

    Hi Frank:

    Max works for ID 3 values only because there is only one group here, as all other values compared, they overlap with max (end_date_time);

    but when I use MAX for ID 1 and 2, the result set is not the same thing as LAG works because there is a GAP...

    Exactly, you have to find the gaps.  If start_date_time is less than or equal to the MAXIMUM of all the end_date_times earlier, then it isn't a gap; Otherwise, there is a gap.

    What is the problem with MAX?

    WITH got_new_group AS

    (

    SELECT id, start_date_time and end_date_time

    CASE

    WHEN start_date_time <= > MAX (end_date_time) OVER (PARTITION BY id )

    ORDER BY start_date_time

    end_date_time

    ROWS BETWEEN UNBOUNDED PRECEDING

    AND 1 PRECEDING

    )

    THEN 0

    1. OTHER

    END AS new_group

    OF y

    )

    got_group_number AS

    (

    SELECT id, start_date_time and end_date_time

    SUM (new_group) OVER (PARTITION BY ID.

    ORDER BY start_date_time

    end_date_time

    ) AS group_number

    OF got_new_group

    )

    SELECT id

    MIN (start_date_time) AS group_start_date_time

    MAX (end_date_time) AS group_end_date_time

    group_number

    OF got_group_number

    GROUP BY id, group_number

    ORDER BY id, group_number

    ;

    You will notice that it is exactly what I posted earlier, in response #5, except that instead of using the OFFSET it uses MAX.

    Output:

    ID GROUP_START_DATE_TIME GROUP_END_DATE_TIME GROUP_NUMBER

    --------------- --------------------- ------------------- ---------------

    1 20140602164819 20140606140851 1

    1 20140827141743 20140924142131 2

    1 20140927141944 20141027142131 3

    2 20140602164819 20140606140851 1

    2 20140827141743 20140924142131 2

    2 20140927141944 20141027142131 3

    3 20140330041350 47121231000000 1

  • I tried to download a pdf and convert them into excel, but the data in excellent is always to the image format.  How can I get the pdf data into the columns and rows?

    I tried to download a pdf and convert them into excel, but the data in excellent is always to the image format.  How can I get the pdf data into the columns and rows so that I can do the calculations?

    If you start the https://forums.adobe.com/welcome Forums Index

    You will be able to select a forum for the specific Adobe products you use

    Click on the symbol "arrow down" on the right (where it is said to see all our products and Services) to open the drop-down list and scroll

  • Min and Max in a row!

    Hi guys,.

    Do you know how I can get the MIN and MAX in a row?

    For example:

    C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8

    10. 50. 70.  5. 90. 135. 4   | 60

    I return 4 and 135.

    I can return it without using the service?

    Thank you

    Eric

    create table t as
    with d as (
      select 1 n from dual
      union all
      select null from dual
    )
    select a.n c1, b.n*2 c2, c.n*3 c3
    from d a, d b, d c;
    
    select c1,c2,c3,
    greatest(
      coalesce(c1,c2,c3),
      coalesce(c2,c3,c1),
      coalesce(c3,c1,c2)
    ) greatest_c,
    least(
      coalesce(c1,c2,c3),
      coalesce(c2,c3,c1),
      coalesce(c3,c1,c2)
    ) least_c
    from t;
    
    C1 C2 C3 GREATEST_C LEAST_C
    1 2 3 3 1
    1 2 2 1
    1 3 3 1
    1 1 1
    2 3 3 2
    2 2 2
    3 3 3
  • button conrol min and max range option during execution

    Is it possible to change the window button conrol min and max Beach setting during execution?

    Thank you very much Nick.

  • Get the latest data of Variable shared before disconnecting from the network

    Hello.

    I use Shared - published network variables for my communication between two PC's. Each LV software will pass the data to another.

    Sometimes the wireless connection to become really bad and the network connection stops.

    I want to get the latest data. Currently my VI will show the value '0' on the variable shared data once the connection is cut.

    I tried using shift, but she registers the same results.

    Can someone show me how I can stay past data when the network connection is disconnected.

    Thank you very much.

    Kind regards

    Hello Fan, Ravens

    It works! Thank you very much.

    Kind regards

  • How to add two lines when the second row is not visible, but also gets the first data line too?

    Mr President

    Jdev worm is 12.2.1

    How to add two lines when the second row is not visible, but also gets the first data line too?

    I want to add two lines like below picture, but want the second to remain invisible.

    tworows.png

    I asked this question but my way of asking was wrong, that's why for me once again.

    Concerning

    Try to follow these steps:

    1. in the database table to add the new column "JOIN_COLUMN" and add the new sequence "JOIN_SEQ".

    2. Add this new column in the entity object. (You can add this in entity object by right clicking on the entity object and then select "Synchronize with database" then the new column and press on sync)

    3. in your bookmark create button to create only one line NOT 2 rows.

    4 - Open the object entity--> java--> java class--> on the entity object class generate and Tick tick on the accessors and methods of data manipulation

    5 - Open the generated class to EntityImpl and go to the doDML method and write this code

      protected void doDML(int operation, TransactionEvent e)
      {
        if(operation == DML_INSERT)
        {
          SequenceImpl seq = new SequenceImpl("JOIN_SEQ", getDBTransaction());
          oracle.jbo.domain.Number seqValue = seq.getSequenceNumber();
          setJoinColumn(seqValue);
          insertSecondRowInDatabase(getAttribute1(), getAttribute2(), getAttribute3(), getJoinColumn());
        }
    
        if(operation == DML_UPDATE)
        {
          updateSecondRowInDatabase(getAttribute1(), getAttribute2(), getAttribute3(), getJoinColumn());
        }
    
        super.doDML(operation, e);
      }
    
      private void insertSecondRowInDatabase(Object value1, Object value2, Object value3, Object joinColumn)
      {
        PreparedStatement stat = null;
        try
        {
          String sql = "Insert into table_name (COLUMN_1,COLUMN_2,COLUMN_3,JOIN_COLUMN, HIDDEN_COLUMN) values ('" + value1 + "','" + value2 + "','" + value3 + "','" + joinColumn + "', 1)";
          stat = getDBTransaction().createPreparedStatement(sql, 1);
          stat.executeUpdate();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        finally
        {
          try
          {
            stat.close();
          }
          catch (Exception e)
          {
            e.printStackTrace();
          }
        }
      }
    
      private void updateSecondRowInDatabase(Object value1, Object value2, Object value3, Object joinColumn)
      {
        PreparedStatement stat = null;
        try
        {
          String sql = "update table_name set column_1='" + value1 + "', column_2='" + value2 + "', column_3='" + value3 + "' where JOIN_COLUMN='" + joinColumn + "'";
          stat = getDBTransaction().createPreparedStatement(sql, 1);
          stat.executeUpdate();
        }
        catch (Exception e)
        {
          e.printStackTrace();
        }
        finally
        {
          try
          {
            stat.close();
          }
          catch (Exception e)
          {
            e.printStackTrace();
          }
        }
      }
    
  • Find dates MIN and MAX

    Please, advise how correctly find MIN and MAX dates.
    The XML code:
    <DATES>
    <DT>2011-02-24</DT>
    <DT>2011-02-25</DT>
    <DT>2011-02-26</DT>
    <DT>2011-02-27</DT>
    <DT>2011-02-28</DT>
    </DATES>
    Model:
    <?xdoxslt:minimum(DT)?>
    <?xdoxslt:maximum(DT)?>
    The output:
    0
    20110224
    Expected results:
    2011-02-24
    2011-02-28

    Hello

    If your data is:



    2008-10-04

    1


    2009-10-21

    3


    2009-11-05

    4


    2008-11-10

    2

    The maximum is given by: / ROWSET/ROW/DT [.. / DT_RANK = count (//ROW)]
    and the minimum is: / ROWSET/ROW/DT [.. / DT_RANK = 1]

    There may be more effective, but it works.

    concerning

    Jorge

  • How can I get the filtered data from the first form

    How can I get the filtered data from the first form in a second form to make an update of the multi.
    Thank you very much

    William,

    I would use for this collections. A link is good if you need to pass a single value.

    1. create a collection
    2 fill the collection with your result set
    3. go in the page target and uses a method of a query in your link to this page
    4. your target page receives a request and allows you to edit documents.

    Denes Kubicek
    -------------------------------------------------------------------
    http://deneskubicek.blogspot.com/
    http://www.Opal-consulting.de/training
    http://Apex.Oracle.com/pls/OTN/f?p=31517:1
    -------------------------------------------------------------------

  • Get the raw data to map its (SDK)

    I did a search on sound cards and many forums have been useful.  I have just a few quick questions.

    I have a card his (CardDeluxe http://www.digitalaudio.com/) connected to the computer through a PCI.  My goal is to get the raw data from the card and plug and it blow in analytics in CVI.  I don't know how to "talk" to my sound card.

    Of course, my main question is above, but to the refine some concerns...

    I guess I need the SDK libraries for that.  For this, I just need to install the MSN help libraries?

    Is this possible in the Basic Version, or if the full Package of CVI is necessary?

    I have not done things well at low altitude, but it looks like getting a wav file is necessary.  I can't use anything outside of the applications I want to eventually create a program automatically record and play at a time (sync) précis.

    Thanks in advance.

    This site is what I was looking for.  The zip file contains an exe as file c source code.

    http://paulhoule.com/phsrec/index.php

    Edit:

    There is also some info here - http://forums.ni.com/t5/LabWindows-CVI/wav/m-p/235344

Maybe you are looking for

  • Retina Macbook does not notice external HD

    I have a macbook of retina 2015 start 12 '', 1.1 ghz. It is a few months old. He does not notice a USB flash, hard drive or ssd drive reader, all the 3.0 usb plugged into an adaptor. It will however, cool and he will notice my iphone more than 6 s on

  • Cannot restore the link bookmark Add on entry

    I use the epubreader add-on. It has 2 inputs/links in your bookmarks button. I deleted the one bookmark recently and this has also removed other that which was below recent Tags and especially Unsorted Bookmarks. I removed the firefox add-on - we (ep

  • How can I get the numbers to treat my numeric value in text form?

    When using the 'numbers', I want to type in a number and have it show exactly as input, in this case with leading zeros.  How can I get the program to deal with any symbol in the form of text and enter it exactly as I typed?

  • help with table in spreadsheet string

    Hello I need assistance to format my 2D in a string table. I have a 2D DBL like this chart: and I want it in a format string like this "0.12 0, 1 0.34, 2 0.11. Line 0 pass 0 0 Col 1 Row line 1 Col 0 line 1 Col 1 line 2, column 0 line 2 Col 1... and s

  • How to manage them with not not enough memory?

    If I open too much demand, it pops up a window not having enough memory, Increase virtual memory size help? Anyone have any suggestions on how to handle this situation? Thanks in advance for your suggestions