How to retrieve a statistic sample from a database table

Hi experts,
Let's say I have a 100.000 rows table and I want to take a representative statistical sample from that table.
Say, it should be 5% (or 5000 rows).
Question is: How to ensure that the sample is representative?
This is not guaranteed by UP TO N ROWS because the database selects without having an order by  or WHERE starting reading the first db blocks until it reaches  the limit of 5000 rows.
SELECT * UP TO 5000 rows into table .... from ZSAMPLE.
This means I miss mostly of the records in the table, hence the sample is not representative.
Do you ever encounter such a problem?

You could SELECT (with package size if desired) into an internal table.  Then:
Select * from table into internal table........
  package size 10000.  "not really necessary for 100000 row table
*Initialize a counter of type i.
  lv_counter = 0.
loop at the internal table.
  lv_counter = lv_counter + 1.
   if lv_counter lt 20. "1 in 20 = 5%
     delete internal table. "drop this row.
   elseif lv_counter eq 20.
     lv_counter = 0. 
endif.
endloop.
endselect.  "if you used package size.
at the end you would have kept every 1 out of every 20 records from your original table select.  Be sure to use a package size (if needed ) that is an exact multiple of 20.  To futher randomize the table, you could sort on some field that has random values, etc. before doing the every 20th record retention.

Similar Messages

  • Hello Anybody, I have a question. Can any of you please suggest me how to make an xml file from the database table with all the rows? Note:- I am having the XSD Schema file and the resulted XML file should be in that XSD format only.

    Hello Anybody, I have a question. Can any of you please suggest me how to make an xml file from the database table with all the records?
    Note:- I am having the XSD Schema file and the resulted XML file should be in that XSD format only.

    The Oracle documentation has a good overview of the options available
    Generating XML Data from the Database
    Without knowing your version, I just picked 11.2, so you made need to look for that chapter in the documentation for your version to find applicable information.
    You can also find some information in XML DB FAQ

  • Can I restore the deleted statistical data from the database tables?

    Hi all,
       I have deleted the statistical data from the database tables like(Ex: RSDDSTAT, RSDDSTATWHM,..) by mistake through RSA1> Tools> BW Statistics for Infoproviders--> Delete.
    Is there any way to restore the deleted data back? Thanks in advance.

    Now I'm really confused-
    Your first post said
    "<b>I have deleted the statistical data from the database tables like(Ex: RSDDSTAT, RSDDSTATWHM</b>,..) by mistake through RSA1> Tools> BW Statistics for Infoproviders--> Delete."
    but your last respsonse said
    "I have deleted the BW Statistics data, <b>not the actual data in RSDDSTAT tables</b> through
    RSA1 -> Tools -> BW Statistics for InfoProviders -> clicked 'Delete' bin to delete data."
    If you used the RSA1 -> Tools -> BW Statistics for InfoProviders -> clicked 'Delete' - <b>then you deleted the data from the RSDDSTAT tables</b>. This assumes you accepted the default date range that would have popped up after the clicking on the Delete button which specified to delete thru the current date.  If this is what you did, the data is gone.  Your only hope is be to recover from a DB backup.  
    The data in the RSDDSTAT tables is what is used to feed the BW Statistics cubes, generally on a daily basis.

  • How to select first several records from a database table by using select?

    Hi,
       I want to select first 100 records from a database table by using select clause. How to write it?
       Thanks a lot!

    hai long!
                 well select statement is used to retrive
    records from the database.
    following is the syntax to be used.
    1) select *  into corresponding fields of itab from basetable where condition.
    endselect.
      ex: select * into corresponding fields of itab from mara
                where matnr >= '1' and  matnr <= '100'.
           append itab.
          endselect.
    select * is a loop statement.it will execute till matnr is less than or equal to 100.
    note: you can also mention the required field names in the select statement otherwise it will select all the field from table mara.
    note: itab means your internal table name.
    hope you got the required thing.if it really solved u r problem then award me the suitable points.<b></b>

  • How to retrieve the large data from the database

    in my program, I want to operate the data retrieved from the database. but there are too many rows in the ResultSet . so when I try to get the ReusltSet from the database, the error of "java.lang.OutOfMemoryError
    " will appear . because there are two million rows contained in the ResultSet, So I want to know whether there are some methods to deal with this problem.
    anyone can give me some tips or recommend some papers and books to me.
    thanks!!!!

    the program is developed for the data warehourse, you know there is a large number of data in data warehourse. so I think I have to deal with the very large ResultSet in my program, this code is a example for my problem :
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    public class Untitled1 {
        String user = "";
        String password = "";
        public void createTable() {
            try {
                Class.forName("com.sybase.jdbc3.jdbc.SybDriver");
                System.out.println("Good to go");
                String url = "jdbc:sybase:Tds:59.64.137.240:5000/TJ";
                Connection conn = DriverManager.getConnection(url, user, password);
                System.out.println("connect successfully!");
    //            Statement st1 = conn.createStatement();
                String sqlsentence2 = "SELECT DISTINCT caller FROM upcdr";
                PreparedStatement st2 = conn.prepareStatement(sqlsentence2);
                PreparedStatement st3 = conn.prepareStatement("INSERT INTO callerTable VALUES(?)");
                System.out.println("createstatement successfully!");
    //            String sqlsentence1 = "CREATE TABLE callerTable (caller CHAR(18))";
    //            st1.executeUpdate(sqlsentence1);
    //            System.out.println(sqlsentence1);
    //            st1.close();
                ResultSet rs = st2.executeQuery();
                while (rs.next()) {
                    st3.setString(1, rs.getString("caller"));
                    st3.executeUpdate();
                    System.out.println(rs.getString("caller"));
                st2.close();
                st3.close();
            } catch (SQLException e) {
                e.printStackTrace();
                System.out.println(e.getMessage());
               System.out.println( e.getSQLState());
               System.out.println( e.getErrorCode());
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
        public static void main(String args[]) {
            Untitled1 cct = new Untitled1();
            cct.createTable();
    }at here, the table "upcdr" is very large, it has two million rows. when I run this program , the error will happen. someone told me that if I use the cursor, because it will retrieve one row from the database every time, so it will not produce a very large ResultSet, then the memory would not be used out. but I am not familiar with that aspect. so I think if anyone can give me some advice.
    thanks!!!!

  • How to Retrieve the Attributes Definitions from a Database

    Hello!
    Is there a way of getting the definitions (types) of the attributes (columns) from a database, supposing we have a connection to it?
    Thanks in advance.

    [http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html#getMetaData()]

  • How can I retrieve all row information from a database table.

    I have a jsp file which calls info from columns in a table. My question, is how can I edit it so that it retrieves all the rows?
    I tried using resultset SalesInfo.next() which only retrieves the last row value and resultset SalesInfo.first() which only retrieves the first row value.
    Here is my code
    public ResultSet SalesInfo;
    public void getSalesInfo()
              try
                   Statement stmt = db.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                   SalesInfo = stmt.executeQuery("SELECT sales_id,cust_id,product_id, quantity from sales;");
                   SalesInfo.first();
                   setCartsales_id (SalesInfo.getString("sales_id"));
                   setCartcust_id (SalesInfo.getString("cust_id"));
                   setCartProduct_id(SalesInfo.getString("product_id"));
                   setCartquantity (SalesInfo.getString("quantity"));
              catch(SQLException e )
                   setCartsales_id(e.toString());
                   e.printStackTrace();
    Also I apologise for not having the proper code format as I had a problem with my keyboard.

         public class SalesDB{
        public static synchronized Vector getSalesDetail(Connection connection) throws SQLException{
            String query = "SELECT * from Sales;"
           Statement statement = connection.createStatement();
            ResultSet results = statement.executeQuery(query);
            Vector sale_details = new Vector();
            while(results.next() == true){
         SaleInfo saleInfo = new    SaleInfo(results.getString("sales_id"),results.getDouble("cust_id"),results.getString("product_id"));
                sale_details.add(saleInfo);
            results.close();
            statement.close();
            return sale_details;
    }

  • How to retrieve linked records effciently from the database

    Hi,
    I have some records in database related to supply chain.
    e.g. N1 supplies item I1 to Node N2 is represented as N1 I1 N2.
    Now I want to find all parent nodes or say chain of nodes supplying to particular node in an efficient way.
    Can you please tell me how I can do it with efficient query. Currently it needs multiple queries & performance drops considerably.
    Regards,
    Veena

    please check the link
    http://wiki.oracle.com/thread/1246329/findrecentmostrowsaddedinatable?t=anon
    Here you can find the new inserted data/ modified data from a table.

  • Selecting the last record from a database table

    In my ABAP Program, I have to use a select statement to retrieve the last record from the database table with the same key.  In other words, the Program will get more than one hit on the database table for the selected keys and I need to retrieve values from only the last record and not the first.  I know I can use an internal table to sort the records first and then retrieve the right value.   But to make things easier, is there a SELECT statement keyword than I can use to do this in one single step?  Thanks!

    hi,
    tables:mara.
        data: begin of it_mara occurs 0,
                matnr like mara-matnr,
                meins like mara-meins,
                mtart like mara-mtart,
                end of it_mara.
    select-options:s_matnr for mara-matnr.
    select matnr
              meins
              mtart
    from mara
    into table it_mara
    where matnr in s_matnr.
    if not it_mara[] is initial.
    sort it_mara by matnr descending.
    read table it_mara index 1.
    endif.
    then you get the last record of the select statement.
    reward points if useful,
    venkat.

  • How to retrieve the parameter names from a JSP page ? Urgent Please

    Hello,
    Can anybody tell me how to retrieve the parameter names from the JSP
    page. (without using getParameterNames() method.)
    The problem with the getParameterNames() method is I get the Jumbled output.
    I need it very badly
    With regards
    Ananth R
    email:[email protected]
    [email protected]

    Dear duffymo,
    My primary intention is to convert the JSP form information into a XML file.
    If I do not get the Parameter names in the correct order how can I maintain
    tag order in XML file.
    For ex: (JSP PAGE VIEW)
    Name--
    FirstName
    MiddleName
    LastName
    Address--
    Street1
    Street2
    City
    Country
    &so on
    (XML File to be generated)
    <Name>
    <FirstName>Value</FirstName>
    </Name>
    <Address>
    <street1>value</street1>
    </Address>
    & so on
    If I use getParameterNames() to get all the parameter names(Which form the tag names in the XML file ) the Enumeration object it returns will not be in the same order as the text fields in JSP.From this I can not construct a meaningful XML file.
    order means: Order of entry on the page, from top to bottom
    That's it
    Waiting for your responses

  • How to retrieve SOAP Original Header from request and response

    Hi,
    Does anyone know how to retrieve SOAP original header from SOAP request and response? I surfed but I'm able to see only the retrieval of SOAP custom headers via BPM mediator. Can anyone please help me regarding this? Also Please tell me how to check the headers in the Enterprise Manager.

    HI Chandra,
    Thanks for your suggestions.
    But i think in my case we do not want to get the complete list. We still want to get only 100 items initially and then if the user would scroll down he/she would see more items. But we already need to know the total number of items for the purpose of showing a message to the user. For e.g. Total issues (515),  but the table would initially show only 100 and then another 100 after scroll. So setting the size litmit to max would not help.
    And to be able to use the $count you mentioned, we have to still make another oData service call which we do not want.
    But as i mentioned there is already a property named "__count" in the response of the bindItems() method call and i see that it has correct count but not sure how to retrieve it inside the controller. Thanks.
    Regards,
    Ashish

  • How to retrieve the image back from the running CSS

    how to retrieve the image back from the running CSS

    Gilles,
    Thank for your response.
    But the version we use is sg0740107s and can not download from the Cisco Web site any more.
    Does cisco have a archive site for all the image so that the user can download it?
    sctorcss1# sh ver
    Version: sg0740107s (07.40.1.07s)
    Flash (Locked): 07.20.2.06
    Flash (Operational): 07.40.1.03
    Type: PRIMARY
    Licensed Cmd Set(s): Standard Feature Set

  • How to retrieve the item text from VL03 transaction .

    How to retrieve the item text from VL03 transaction .
    The requirement is like this, the item text thus retrieved should be printed in the script under the item.

    Jagadieshwar,
    Use <b>READ_TEXT</b> function module to get the proper item text of Delivery.
    <b>ID</b>: Probably you want 0002 (Item Note), but it depends which text you want Item Note, Material Sales Text ,etc..
    <b>NAME</b>: CONCATENATE Delivery Doc. Number + Delivery Item Number (e.g. 0080001729000010)
    <b>OBJECT</b>: VBBP
    <b>
    LANGUAGE</b>: sy-langu or whatever you want.

  • How to get the selection parameters from logical database into one of the t

    Hi Sap ABAP Champians,
    How to get the selection parameters from logical database into one of the tab in the tabstrip selection-screen.
    Please help me for this
    Thanks
    Basu

    Hi
    Thanks, that will work, but then I'll have to insert code into all my reports.
    I can see that "Application Server Control Console" is able to rerun a report.
    This must mean that the Report Server has access to the runtime parameters.
    But how?
    Cheers
    Nils Peter

  • How to install Pro*C apart from the database?

    I would like to know how one could Pro*C apart from the database. Thanks.

    Just unzip all Instant Client zip files in the same directory, they all have "instantclient_11_2" as first path element,
    so everything will end up in the right place in this directory.
    If your Instant Client directory has a different name, unzip the package somewhere and move all files and
    directories in it to your instant client directory.
    Yours,
    Laurenz Albe

Maybe you are looking for