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
     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值