`
zds420
  • 浏览: 203755 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

SQL GROUP BY 分组

 
阅读更多
--  统计总数使用了分组
SELECT 
  al.value AS factors_value,
  ROUND(al.pv / maxpv.total * 100, 1) AS rate 
FROM
  (SELECT 
    IF(
      INSTR(factors_value, '电信'),
      '电信',
      IF(
        INSTR(factors_value, '移动'),
        '移动',
        IF(
          INSTR(factors_value, '联通'),
          '联通',
          IF(
            INSTR(factors_value, '铁通'),
            '铁通',
            IF(
              INSTR(factors_value, '长城宽带'),
              '长城宽带',
              factors_value
            )
          )
        )
      )
    ) AS VALUE,
    SUM(pv) AS pv 
  FROM
    stats_buyer 
  WHERE web_id = 'xxxxxxx' 
    AND factors_id = '0' 
    AND factors_value REGEXP '电信|移动|联通|铁通|长城宽带' 
  GROUP BY VALUE) al 
  INNER JOIN 
    (SELECT 
      MAX(a.pv) AS pv,
      SUM(a.pv) AS total 
    FROM
      (SELECT 
        IF(
          INSTR(factors_value, '电信'),
          '电信',
          IF(
            INSTR(factors_value, '移动'),
            '移动',
            IF(
              INSTR(factors_value, '联通'),
              '联通',
              IF(
                INSTR(factors_value, '铁通'),
                '铁通',
                IF(
                  INSTR(factors_value, '长城宽带'),
                  '长城宽带',
                  factors_value
                )
              )
            )
          )
        ) AS VALUE,
        SUM(pv) AS pv 
      FROM
        stats_buyer 
      WHERE web_id = 'xxxxxxx' 
        AND factors_id = '0' 
        AND factors_value REGEXP '电信|移动|联通|铁通|长城宽带' 
      GROUP BY VALUE) a) maxpv 
    ON al.pv = maxpv.pv 
    
    
    --  统计总数使用了分组测试

    SELECT INSTR(factors_value,'电信'),factors_value, SUM(pv) AS pv  FROM stats_buyer
    GROUP BY INSTR(factors_value,'电信')
    
    -- 自己写的和上面写的区别
    SELECT  tbl_sum.factors_value,tbl_sum.pv/tbl_total.pv_total,tbl_total.pv_total,tbl_sum.pv
    FROM 
    (
    SELECT factors_value,SUM(pv) AS pv
    FROM stats_buyer 
    WHERE web_id='xxxxx' AND factors_id='3'
    GROUP BY factors_value
    ORDER BY  pv DESC LIMIT 1
    ) AS tbl_sum
    LEFT JOIN 
    (  
	SELECT SUM(all_pv) AS pv_total 
	FROM
	(
	SELECT factors_value,SUM(pv) AS all_pv
	FROM stats_buyer 
	WHERE web_id='xxxxxx' AND factors_id='3'
	GROUP BY factors_value 
	) 
	AS table_total
    ) AS tbl_total 
    ON 1=1
     

 

分享到:
评论

相关推荐

    sqlserver+group by分组查询分页存储过程

    根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...

    SQL中GROUP BY的用法

    GROUP BY 是 SQL 中的一种分组查询语句,通常与聚合函数配合使用。GROUP BY 语句根据一个或多个列将查询结果分组,并对每组计算聚合函数的值。 在使用 GROUP BY 语句时,需要注意以下几点: 1. select 语句中所有...

    mysql使用GROUP BY分组实现取前N条记录的方法

    本文实例讲述了mysql使用GROUP BY分组实现取前N条记录的方法。分享给大家供大家参考,具体如下: MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY...

    SQL GROUP BY 语句详解

    SQL GROUP BY 语句是数据库查询中非常重要的一个部分,它允许我们对数据进行分组,以便于统计和分析。在处理大型数据集时,GROUP BY 与聚合函数(如 SUM、COUNT、AVG、MAX 和 MIN)一起使用,能够帮助我们汇总数据,...

    在SQL语言中用Group By子句实现除法.pdf

    尽管在简单的分组聚合中Group By子句非常强大,但在涉及更复杂逻辑计算的场景下,需要结合SQL的其他高级特性来完成任务。掌握这些高级用法对于进行复杂数据处理和分析至关重要,也是专业IT人员不可或缺的知识点。

    SqlServer中Group By高级使用--Inner Join分组统计

    在SQL Server数据库管理中,Group By语句是用于对数据进行分组并计算每个组的汇总信息的关键工具。通常,我们使用聚合函数如COUNT、SUM、AVG、MIN和MAX等与Group By一起,以便对特定列进行分析。然而,当我们需要在...

    Sql聚合函数和group by的关系详解.doc

    Sql 聚合函数和 group by 的关系详解 Sql 聚合函数和 group by 是 SQL 语言中两个非常重要的概念,它们之间存在紧密的联系。那么,什么是聚合函数?什么是 group by?它们之间的关系是什么?在本文中,我们将详细地...

    SQL之分组统计和子查询专题

    * 分组之中的不成文规定之一:当数据重复的时候分组才有意义,因为一个人也可以一组(但无没有什么意义),如果想分组,则需要用GROUP BY不管是单字段分组还是多字段分组,一定要有一个前提,即存在了重复数据。...

    Sequelize中用group by进行分组聚合查询

    在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...

    Lucene group by ,分组实现

    "Lucene group by" 指的就是在 Lucene 中实现基于特定字段的分组操作,类似于 SQL 中的 GROUP BY 子句。这使得用户能够按类别聚合文档,例如,根据作者、日期或其他分类标准来查看搜索结果。 在 Lucene 中,分组...

    SQL语句中Group BY 和Rollup以及cube用法

    `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、COUNT、AVG等)。在数据库管理中,当我们需要对某些特定字段的数据进行...

    简单讲解sql语句中的group by的使用方法

    group by 就是依据by 后面的规则对数据分组,所谓的分组就是讲数据集划分成若干个’小组’,针对若干个小组做处理。 2.语法规则 SELECT column_name, aggregate_function(column_name) FROM table_name WHERE ...

    使用Group by分组统计.rar

    在SQL查询中,`GROUP BY`语句是一个非常重要的部分,它用于对数据进行分组,以便我们可以对每个组执行聚合函数,如`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等。这个概念在数据分析和数据库管理中至关重要,因为它允许...

    SQL Server分组排序取数据的实现

    在SQL中,`GROUP BY`语句用于将数据根据一个或多个列进行分类,例如在示例代码中,我们根据`A.DocNo`, `A1.Item_ItemCode`, `A2.LineNum`, `A2.ARBillLine`, `A2.Maturity`, `A2.AROCMoney_TotalMoney`和`A2....

    SQL按月分组.txt

    - 在本例中,`GROUP BY` 用于按照客户(`ͻ`)、商品(`Ʒ`)、月份(`µ`)和客户(再次出现的`ͻ`)进行分组,确保每个月份的数据被正确地归纳在一起。 ### 示例详解 #### 数据表结构 假设有一个名为`...

    sql2000分组统计

    在SQL Server 2000中,这些函数可以与GROUP BY一起使用,以在每个分组上应用这些操作: ```sql SELECT ProductCategory, AVG(SalesAmount) FROM Sales.SalesOrderDetail GROUP BY ProductCategory; ``` 这将返回...

    pb通过sql语句实现分组小计统计

    在SQL中,实现分组小计主要依赖于`GROUP BY`子句与聚合函数(如`SUM()`, `AVG()`等)。这些功能组合起来可以对数据进行多维度的分析与汇总。 例如,为了计算每个`STOCK_ID`下按`TYPE_CD`分类的平均价格(`AVG_PRICE`...

    mysql分组取每组前几条记录(排名) 附group by与order by的研究

    –按某一字段分组取最大(小)值所在行的数据 代码如下: /* 数据如下: nameval memo a 2 a2(a的第二个值) a 1 a1–a的第一个值 a 3 a3:a的第三个值 b 1 b1–b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b ...

Global site tag (gtag.js) - Google Analytics