zoukankan      html  css  js  c++  java
  • 计算min-max两个整数之间的随机整数

    /*------------------------------效率最低
    功能:计算min-max两个整数之间的随机整数
    作者:
    日期:20180831
    区别:在查询中嵌入count(*)计算记录总条数,效率最低
    */
    --SET STATISTICS IO ON; 
    SET STATISTICS TIME ON; 
    GO 
    DECLARE @min INT= 1;
    DECLARE @max INT= 100;
    DECLARE @icount INT= 0;
    DECLARE @t TABLE
        (
         i INT IDENTITY
               PRIMARY KEY
        ,n INT
        );
    INSERT  INTO @t
            (n
            )
            SELECT  FLOOR(RAND(CHECKSUM(NEWID())) * ( @max - @min + 1 )) + @min--计算min-max之间的随机整数
            FROM    master..spt_values AS a
                    CROSS JOIN master..spt_values AS b;
    
                                 
    SELECT  n
           ,COUNT(n) AS 数量
           ,( SELECT    COUNT(*)
              FROM      @t
            ) AS 总数
           ,COUNT(n) * 100.0 / ( SELECT COUNT(*)
                                 FROM   @t
                               ) AS [占比例%]
    FROM    @t
    GROUP BY n;
    
    
    /*------------------------------效率居中
    功能:计算min-max两个整数之间的随机整数
    作者:
    日期:20180831
    区别:提前计算记录总条数赋值到变量,效率居中
    */
    --SET STATISTICS IO ON; 
    SET STATISTICS TIME ON; 
    GO 
    DECLARE @min INT= 1;
    DECLARE @max INT= 100;
    DECLARE @icount INT= 0;
    DECLARE @t TABLE
        (
         i INT IDENTITY
               PRIMARY KEY
        ,n INT
        );
    INSERT  INTO @t
            ( n
            )
            SELECT  FLOOR(RAND(CHECKSUM(NEWID())) * ( @max - @min + 1 )) + @min--计算min-max之间的随机整数
            FROM    master..spt_values AS a
                    CROSS JOIN master..spt_values AS b;
    SELECT  @icount = COUNT(*)
    FROM    @t;
                                 
    SELECT  n
           ,COUNT(n) AS 数量
           ,@icount AS 总数
           ,COUNT(n) * 100.0 / @icount AS [占比例%]
    FROM    @t
    GROUP BY n;
    /*------------------------------效率最高
    功能:计算min-max两个整数之间的随机整数
    作者:
    日期:20180831
    区别:根据@@rowcount计算记录总条数,效率最高
    */
    --SET STATISTICS IO ON; 
    SET STATISTICS TIME ON; 
    GO 
    DECLARE @min INT= 1;
    DECLARE @max INT= 100;
    DECLARE @icount INT= 0;
    DECLARE @t TABLE
        (
         i INT IDENTITY
               PRIMARY KEY
        ,n INT
        );
    INSERT  INTO @t
            (n
            )
            SELECT  FLOOR(RAND(CHECKSUM(NEWID())) * ( @max - @min + 1 )) + @min--计算min-max之间的随机整数
            FROM    master..spt_values AS a
                    CROSS JOIN master..spt_values AS b;
    SET @icount = @@ROWCOUNT; 
    --SET @icount=@@IDENTITY                     
    SELECT  n
           ,COUNT(n) AS 数量
           ,@icount AS 总数
           ,COUNT(n) * 100.0 / @icount AS [占比例%]
    FROM    @t
    GROUP BY n;
    

      

  • 相关阅读:
    UVALive 7456 Least Crucial Node (并查集)
    UVALive 7454 Parentheses (栈+模拟)
    HDU 5778 abs (枚举)
    HDU 5776 sum (模拟)
    HDU 5806 NanoApe Loves Sequence Ⅱ (模拟)
    HDU 5805 NanoApe Loves Sequence (模拟)
    HDU 5734 Acperience (推导)
    HDU 5842 Lweb and String (水题)
    HDU 5833 Zhu and 772002 (高斯消元)
    HDU 5835 Danganronpa (贪心)
  • 原文地址:https://www.cnblogs.com/bgbird/p/9638564.html
Copyright © 2011-2022 走看看