Count of records/rows in a Table

Hi
This could be a basic question , but i don't have an idea how to do that .
Could you please tell me , how get an count of records/rows in a specific table ?
Thank you
Luke

sb92075 wrote:
It takes time to get count of records if the table size is hugCan YOU count to 1000000000000000000 as quickly as you count to 10?????????????????????????
If it takes you longer to count many things, why do you expect Oracle to do better than you?Really??
Let's try some counts and see.
First off, let's count a few 1000 rows.
SQL> set timing on
SQL> select count(*) from all_objects;
  COUNT(*)
     45045
Elapsed: 00:00:17.08So 17 seconds for 45,000 rows.
Now if you're logic is correct, counting let's say a few billion rows, should take an hour? Perhaps more?
Here's what I see on one of my larger tables:
SQL> select count(*) from daily_xxxxxxx;
  COUNT(*)
2569780329
Elapsed: 00:00:10.03Oops... it is faster.
Get a clue!I hereby sincerely apologise that my database does not adhere to your fine logic that says it should take a few hours - I will speak disapprovingly to the CBO for allowing the 2nd select count (on the same database) to be faster than the 1st select count. I will even use the backchannel to inform Larry that this is not acceptable.
Of course, this is assuming that you do not have your head stuck up somewhere and are indeed correct that it takes a "+looooonnngggg+" time to count lots of rows.
!http://smileyicons.net/smilies/actions1.gif!

Similar Messages

  • I want a count of distinct rows in a table

    I want a count of distinct rows in a table through a single query -- is it possible?
    eg.
    table-
    create table ch1 (a int, b int, c int, d int)
    insert ch1 values (1,1,1,1)
    insert ch1 values (2,2,2,2)
    insert ch1 values (1,1,1,1)
    insert ch1 values (2,2,2,2)
    insert ch1 values (1,3,4,5)

    hi,
    create table ch1 (a int, b int, c int, d int) ;
    insert into  ch1 values (1,1,1,1);
    insert into  ch1 values (2,2,2,2);
    insert  into  ch1 values (1,1,1,1);
    insert into  ch1 values (2,2,2,2);
    insert into  ch1 values (1,3,4,5);
    SQL> select * from ch1;
             A          B          C          D
             1          1          1          1
             2          2          2          2
             1          1          1          1
             2          2          2          2
             1          3          4          5
    SQL> select distinct * from ch1;
             A          B          C          D
             1          1          1          1
             1          3          4          5
             2          2          2          2
    SQL>
      1* select count(*) from( select distinct * from ch1)
    SQL> /
      COUNT(*)
             3
    SQL> ed
    Wrote file afiedt.buf
      1   select count(*) from (select a,b,c,d  from ch1
      2* group by a,b,c,d)
    SQL> /
      COUNT(*)
             3
    SQL> Thanks,
    P Prakash

  • Count the Records in  an internal table without a loop.

    How do i count the number of records in an internal table without using the loop  statement.
    The Describe statement give the total no. of records in the internal table.But i want the count of the key fields in the internal table
    For eg
    Row Field
    1       A
    2       A
    3       A
    4       B
    5       B
    6       C
    Count of A = 3
    Count of B = 2
    Count of C = 1

    Dilip,
      I think isn't posible. Only 3 ideas:
    1ª, make other table "table2", similar to your actual table.
         table2[] = yourtable[].
         delete table2 where key <> 'A'.
         describe table table2 lines contA.
        But depending the amount of data, you may have problems in performance or memory consumption...
    2ª, make other table, only with the keys fields and a count field,
        data begin table2
           key_field1,
           cont type i.
        end data.
       when you append lines to yourdata, make a collect to this table:
        table2-keys = yourtable-keys.
        table2-cont = 1.
       collect table2.
       But only works if you can modify the program where data is appended, and you may be carefull when data is deleted :-(...
    3ª if your data if filled in a select, you may fill the table2 of point 2ª, making a similar select but:
       select keyfields count( * ) into table table2
      from ...
      where (the same you have to fill your original table...)
       group by keys.
    But you have the same problem is data is deleted later...
    I hope that any of the three is useful for you...
    Edited by: Diego Alvarez on Jan 5, 2010 5:09 PM

  • Counting all the rows in a table

    I've just come across what I think is a big oversight in the Power Query UI: it doesn't seem to be possible to find the total number of rows in a table using just the functionality available in the UI. I can do this very easily if I write my own expression
    using Table.RowCount(), but I would have expected to be able to do this through the UI. At the moment, when I go to the Group By dialog (which is where I'd expect to be able to do this) and delete all the columns in the Group By section the OK button gets
    greyed out. 
    Am I missing something here?
    Chris
    Check out my MS BI blog I also do
    SSAS, PowerPivot, MDX and DAX consultancy and run
    public SQL Server and BI training courses in the UK

    Hi Miguel,
    No, what I was talking about was to be able to use the Group By dialog and have no column to group by - that's to say, I'd just want to be able to count the number of rows in a table (or return the sum of all values in a column, or the min/max etc) and return
    a single value. I know I could do this by inserting an artificial column that only contains one distinct value, and using that in the Group By, or by writing my own expression that uses Table.RowCount(), but it seems like a very basic operation that should
    be easier to do in the UI.
    Chris
    Check out my MS BI blog I also do
    SSAS, PowerPivot, MDX and DAX consultancy
    and run public SQL Server and BI training courses in the UK

  • How can count no of rows in all tables in one schema

    hi all
    i want to cound no of rows in my schema ( all tables)
    eg. i have 36 tables
    i want to know no of rows in every tables in only one query through sql or plsql
    how can i do..
    regards
    mohammadi
    Message was edited by:
    Mohdidubai52

    hi
    thanx for ur reply
    but i got error....
    SQL> ED
    Wrote file afiedt.buf
    1 DECLARE
    2 v_rowNo NUMBER := 0;
    3 v_sum NUMBER := 0;
    4 v_tableName VARCHAR2(100);
    5 CURSOR c1 IS
    6 SELECT table_name
    7 FROM user_tables;
    8 BEGIN
    9 FOR counter IN c1 LOOP
    10 DBMS_OUTPUT.PUT_LINE(counter.table_name);
    11 EXECUTE IMMEDIATE 'SELECT COUNT(1) FROM ' || counter.table_name INTO v_ro
    wNo;
    12 v_sum := v_sum + v_rowNo;
    13 END LOOP;
    14 DBMS_OUTPUT.PUT_LINE('Number of rows: ' || v_sum);
    15* END;
    16 /
    DECLARE
    ERROR at line 1:
    ORA-00933: SQL command not properly ended
    ORA-06512: at line 11
    again
    thanx
    regards
    Mohammadi

  • To count the records in the database table...

    I want to count the number of records in the database table (infotypes PA0000)
    is it possible to count ?
    Any function module is there?
    Thanks in advance..

    Hi dhavamani ponnusamy,
    SELECT COUNT(*) FROM <DB TABLE NAME> WHERE <CONDITION>.
    or
    SY-DBCNT Will have total no of records satisfying the given criteria in where clause.
    See below sample..
    Data: itab like mara occurs 0 with header line.
    Select * from mara into table mara.
    write:/ sy-dbcnt.
    Hope it will solve your problem...
    Reward points if useful..
    Thanks & Regards
    ilesh 24x7

  • Need to fetch the last record/row from a table

    Hi,
    I have a requirement like fetching the closing balance of the last record of the table and inserting the same into the opening balance of the immediatetly created next record.
    In simple words, I need to fetch a value from the last row of the record.
    For example, I use the below query,
    select rownum, empno, ename from emp
    where rownum = (select count(rownum) from emp);
    But, the above query does not return any of the record.
    Hence, need help on this.
    Regards,
    Shivakumar A
    Edited by: shiva on Mar 27, 2011 10:14 PM

    Rows in a table are inherently unordered. In order to introduce the concept of "first" and "last", you would need to specify how to order the rows which would require that there was one or more columns in the table that you could order by in order to determine the "last" record.
    In your closing balance example, if we assume that there is something like a BALANCE_DATE column,
    SELECT account_number, balance_amount, balance_date
      FROM (
        SELECT account_number,
               balance_amount,
               balance_date,
               rank() over (partition by account_number order by balance_date desc) rnk
          FROM table_of_balances )
    WHERE rnk = 1Justin

  • Count number of rows in a table

    Hi,
    I have a requirement. I want to frame a SQL, which takes schema name as input and returns tables owned by that schema and number of rows inside a particular table.
    A Sample output:
    ===========
    Table            No. of Rows
    ~~~~          ~~~~~~~~
    A                    123
    B                    126
    C                    234
    .Can somebody help me in framing a query for the same.
    Regards,

    hoek wrote:
    But you could use this script:
    http://laurentschneider.com/wordpress/2007/04/how-do-i-store-the-counts-of-all-tables.html
    Laurent's solution most likely was published before IOT. Anyway, IOT ovwerflow tables must be excluded. Otherwise:
    SQL> select  table_name,
      2          to_number(
      3                    extractvalue(
      4                                 xmltype(
      5                                         dbms_xmlgen.getxml('select count(*) c from '||owner || '.' || table_name)),'/ROWSET/ROW/C')) cou
      6    from  dba_tables
      7    where owner = 'OE'
      8  /
    ERROR:
    ORA-19202: Error occurred in XML processing
    ORA-25191: cannot reference overflow table of an index-organized table
    ORA-06512: at "SYS.DBMS_XMLGEN", line 176
    ORA-06512: at line 1
    no rows selected
    SQL> select  table_name,
      2          to_number(
      3                    extractvalue(
      4                                 xmltype(
      5                                         dbms_xmlgen.getxml('select count(*) c from '||owner || '.' || table_name)),'/ROWSET/ROW/C')) count
      6    from  dba_tables
      7    where owner = 'OE'
      8      and nvl(iot_type,'X') != 'IOT_OVERFLOW'
      9  /
    TABLE_NAME                          COUNT
    CUSTOMERS                             319
    WAREHOUSES                              9
    ORDER_ITEMS                           665
    ORDERS                                105
    INVENTORIES                          1112
    PRODUCT_INFORMATION                   288
    PRODUCT_DESCRIPTIONS                 8640
    PROMOTIONS                              2
    PRODUCT_REF_LIST_NESTEDTAB            288
    SUBCATEGORY_REF_LIST_NESTEDTAB         21
    10 rows selected.
    SQL>  SY.

  • Select count(*) for each row of a table

    Hello All,
    Following query gives a statistics for each user (how many items he owns, home many tickets authored, how many objects he is subscribed to etc...)
    select auser.userid,
    (select count(*) from item where owner like '%' || auser.id || '%') ITEM_OWNER_CNT,
    (select count(*) from tkt where originator = auser.id) TKT_ORIGINATE_CNT,
    (select count(*) from tkt where assigned_to = auser.id) TKT_QA_CNT,
    (select count(*) from tkt where create_user = auser.id) TKT_AUTHOR_CNT,
    (select count(*) from subscriptions where subscriber_id = auser.id) SUBSCRIPTION_CNT
    from
    user auser
    I was not happy with the performance of this query, so I tried the same using group by. The performance was even worse.
    Is there any other option for me to try? Please advice.
    Thanks,
    Sathish

    Hi, Sathish,
    As SBH said, a lot depends on your data. Please post some sample data (CREATE TABLE adn INSERT statemetns) for all tables, and the results you want from that data. Describe and give examples of any relationships that are not one-to-one..
    You probably want to do joings, like SBH suggested, rather than scalar sub-queries.
    The connection between the auser and item tables
    (select count(*) from item where owner like '%' || auser.id || '%') ITEM_OWNER_CNT,is very suspicious. Perhaps the item table is poorly designed, and the query would be faster if that table were changed. Is changing the design of the item table an option?
    You should be able to get all the information from the tkt table in one pass. It looks like you need to unpivot the data, so instead of one row per ticket (with 3 different people connected to it), there are 3 rows per ticket, each with only 1 person referenced. This is not necessarily a bad table design. Unpivoting, even more than most other things, depends on your database version, so you'll have to tell what version of Oracle you're using.

  • Create a counter for the rows in a table using script editor?

    Hi ,
    I want to add afield in a particular table  with first field is its serial number . How to use scripting editor to fill the serial number ?
    How to create a counter ?
    Edited by: Rajan.Dexter9 on Jan 30, 2012 9:40 PM

    Hello Rajan,
    Create a field in the table and name it as 'SERIAL'.  Create a variable called 'count' with default value as 0.  Now in script editor, for javascript language and calculate event, write the following script.
    var fields = xfa.layout.pageContent(xfa.layout.page(this)-1, "field", 0);
    for (var i=0; i <= fields.length-1; i++)
         if (fields.item(i).name == "SERIAL")
              count.value = count.value + 1;
                     this.rawValue = count.value;     

  • Get the count of rows in a table control

    Hi Experts,
      How do I get the count of the rows in a table control during run time.
    I am developing a BDC in which I have to check all entries in a table control.
    My requirement is to get the total number of rows in a table control dynamically.
    Thanks
    Kumar

    Hi,
    Use a variable when u r passing the records from the internal table to the screen fields
    and display the same.
    I think this idea may help u.
    And pls explain me ur requirement clearly.
    Refer to the following link this may help u.
    http://sapabapnotes.blogspot.com/2008/03/working-with-ecatt-extended-computer.html
    Reward if helpful.
    Jagadish

  • Count number of rows in table

    Hi!
    1. How can you through ABAP and select statements count the number of rows in one table?
    2. I want to read all rows from one table to an internal table. Can this be done dynamically or do I first have to count the number of rows in the table and then declare an internal table with the number of rows counted.
    regards
    Baran

    HI,
    No you don't have to count number of rows first, Internal table size will increase dynamically. you have to declare this with initial size like this.
    <b>data: itab type standard table of bkpf initial size 0.
    SELECT * FROM bkpf into table itab.</b>
    All values from bkpf will be inserted into table internal table itab.
    Regards,

  • How to get count of records for each type from internal table

    Hi Guys,
    I want to implement a logic to find out the count of records in a internal table.
    Assume my internal table have one field having the entries as shown below.
    Internal table Entries
    10
    10
    10
    11
    11
    12
    12
    12
    12
    13
    14
    14
    15
    15
    15
    15
    15
    16
    16
    17
    18
    19
    20
    20
    20
    ....... etc....
    I should get an output as below
    10's - 3
    11's -2 ,
    12's - 4.... etc..
    Could any one help me how to do this.
    Thanx,
    Kumar

    REPORT  zzz.
    DATA: i(100),
          t(100),
          j TYPE n.
    TYPES: BEGIN OF gt_int_type,
            linex(100) TYPE c,
           END OF gt_int_type.
    DATA: gt_int TYPE STANDARD TABLE OF gt_int_type,
          wa_int LIKE LINE OF gt_int.
    START-OF-SELECTION.
      wa_int-linex = '10'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '10'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '10'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '11'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '11'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '12'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '12'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '12'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '12'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '13'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '14'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '14'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '15'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '15'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '15'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '15'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '15'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '16'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '16'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '17'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '18'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '19'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '20'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '20'.
      APPEND wa_int TO gt_int.
      wa_int-linex = '20'.
      APPEND wa_int TO gt_int.
      LOOP AT gt_int INTO wa_int.
        WRITE:/ wa_int-linex.
      ENDLOOP.
      ULINE.
      SKIP 3.
      SORT gt_int BY linex.
      READ TABLE gt_int INDEX 1 INTO i.
      j = 0.
      LOOP AT gt_int INTO wa_int.
        IF wa_int-linex EQ i.
          j = j + 1.
        ELSE.
          WRITE:/ i,'''s = ', j.
          j = 1.
          i = wa_int-linex.
        ENDIF.
      ENDLOOP.
      WRITE:/ i,'''s = ', j.
    consider clearing leading/trainling spaces...

  • Procudure to count all the rows in a all tables in the schema

    When I run the following store procedure to count all the rows in all the tables I crash my sql Plus editor:
    CREATE OR REPLACE PROCEDURE TC_TABLEROWCOUNT(OWNER IN varchar2)
    IS
    row_count number;
    cursor get_tab is
    select table_name, num_rows
    from all_tables
    where owner='MAXDEV';
    begin
    dbms_output.put_line('Checking Record Counts for schema maxdev ');
    FOR get_tab_rec IN get_tab LOOP
         BEGIN
              EXECUTE IMMEDIATE 'select count(*) from '||get_tab_rec.table_name
              INTO row_count;
              EXCEPTION WHEN OTHERS THEN
                        dbms_output.put_line('Error counting rows for table '
                                                 ||get_tab_rec.table_name);
         END;
    END LOOP;
    END;
    What am I doing wrong.
    Thanks for any help Tony

    The boss gave me 5 pages of tables and wants to know how many row there are in each table. There is a problem of one DB being out of sync with another.
    But I have managed to work the problem though.
    here is the working code:
    CREATE OR REPLACE PROCEDURE TC_TABLEROWCOUNT (
    TableOwner IN varchar2)
    IS
    row_count number;
    vTable varchar2(30);
    v_sqlstmt varchar2(100);
    cursor get_tab is
    select table_name, num_rows
    from all_tables
    where owner = TableOwner;
    begin
    dbms_output.put_line('Checking Record Counts for schema maxdev ');
    FOR get_tab_rec IN get_tab LOOP
    vTable := get_tab_rec.table_name;
    v_sqlstmt := 'SELECT count(*) from '||vTable;
    EXECUTE IMMEDIATE v_sqlstmt into row_count;
    dbms_output.put_line('Table '|| get_tab_rec.table_name || ' Row ' || row_count);
    END LOOP;
    END;

  • Count total records in 2 tables

    Hello,
    I am using this query
    select count(*) from table1, table2) to get the total number of records in those 2 tables. Actually I have only 7 records in both the tables, but I get 15. What could be the problem?
    Also I need to find out another query where in I can find out which table is giving a particular record. e.g table1 has firstname,lastname and table2 has firstman,lastman. I need to know that firstname has come from tabl1 and firstman has come from table2.
    Please help.
    Thanks

    Well, if I'm not misstaken the difference between
    UNION and UNION ALL is that UNION ALL will include
    duplicates while UNION will ignore the duplicates.The UNION clause forces all rows returned by each
    portion of the UNION to be sorted and merged and
    duplicates to be filtered before the first row is
    returned. A UNION ALL simply returns all rows
    including duplicates and does not have to perform any
    sort, merge or filter. It is much more efficient.
    (Although the performance factor may be irrelevant in
    the OP's situation - the issue of duplicate rows
    isn't)And what did I say?
    Asuming the OP does not have duplicates within each
    table (when he/she would really violate relational
    database theory) Why do you assume that? Why would this violate
    relational database theory?If you don't have a primary key, it sure does. I don't have my C J Date book here, but this looks like an accurate transcript of C F Codd's twelve rules a relational database must obay: http://engr.smu.edu/~fmoore/notes/12rules.htm Look at number 2...
    there will not be any difference between the twoUNION "versions".
    That is correct. I just didn't want to change that
    part of the code ( String s1 = rs.getString(2)...)
    since the OP asked about the database query.i wasn't referring to the OP, hence the 'ps' and 'for
    anyone doing this sort of thing in Oracle' and 'if you
    tend to use the column name version of getString()'
    Yes, you are again correct. I just explained why I wrote what I wrote.

Maybe you are looking for

  • Switch recommendation, to add more wired ports to network

    I have a home network that goes from a broad band modem to an Apple AirPort Extreme.  I use the wireless for our iPhones and iPads.  However, ive wired the house so that my computers, NAS, and Apple TV are all wired.  It works great -Time machine is

  • Attachments won't open any more

    I used to be able to open email attachments on my 8800, but last week this suddenly stopped working.  Mostly I'm trying to open XLS files sent from my gmail or yahoo accounts, but I don't think any attachments are working.  Sometimes I get an 'incomp

  • Relationship as scheme or hierarchy

    We use SAP CRM 7.0 and want use relationship category Is a Member of a Borrower Entity groups all companies belonging to the same company group. Company has more then 1 level hierarchy. In Web UI we can see relationship only list and only 1 level. Wh

  • How well does OAS on RHES on VMWare ESX work?

    We're currently running OAS 9.0.4 on RHES 3, but are considering using VMWare ESX. Possibly upgrading to OAS 10gR3 and RHES 4. Are there any particular problems or issues running OAS on VMWare? I'm aware of Oracle's stated support position about VMWa

  • How can I make the font size in my address bar smaller?

    On my laptop running Windows XP, Firefox 7, suddenly the font size on my tabs and in the address bar are huge. I have no idea what happened to make them that way. It's horrible.