账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    group by后对数据进行统计出现两次以上的次数
    • 2020-01-01 00:00
    • 11
    41
    0

    问题描述

    因实际表的内容比较复杂,所以我用下面的表进行代替,但是遇到的难点是一致的。
    
    

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    表的结构如下

    create table t_type(
        id int primary key auto_increment,
        type_code TINYINT,
        type_name VARCHAR(22),
        view_user int
    );
    
    id type_code type_name view_user
    1      1            TV          100
    2      2            VIDEO      100
    3      3            PIC          100
    4      4            NOTE      100
    5      1            TV          200
    6      2            VIDEO      200
    7      1            TV          100
    8      2            VIDEO      200

    你期待的结果是什么?实际看到的错误信息又是什么?

    我想要的结果应该是根据type_code进行分组,然后查询出对应类型的 总的人数,去重后的人数和重复的人数。

    以下是我自己尝试的sql:

    SELECT
        count( a.view_user ) AS userCount,
        count( DISTINCT a.view_user ) AS realUserCount,
        (
        SELECT
            count( 1 ) 
        FROM
            ( SELECT view_user FROM t_type b WHERE b.type_code = a.type_code GROUP BY view_user HAVING count( * ) > 1 ) tmp 
        ) AS repeatUserCount
    FROM
        t_type a 
    GROUP BY
        a.type_code;

    但是不起作用:
    1054 - Unknown column 'a.type_code' in 'where clause', Time: 0.000000s

    大佬们请赐教,谢谢了。

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 你是我预订的人i 普通会员 1楼

      在SQL中,你可以使用GROUP BY语句对数据进行分组,并使用COUNT函数计算每个组的出现次数。以下是一个例子:

      假设我们有一个名为orders的表,其中包含order_idproduct两个字段。我们想要找出每个产品在每个订单上的数量,我们可以使用以下查询:

      sql SELECT product, COUNT(order_id) as count FROM orders GROUP BY product;

      这将返回一个结果集,其中每个产品在每个订单上的数量都被计算出来。

      如果你想找出两次出现以上的次数,你可以稍微修改一下查询。例如,如果你想找出每个产品在每个订单上的数量,但是不想包括那些只出现了一次的订单,你可以添加一个条件来实现这一点:

      sql SELECT product, COUNT(order_id) as count FROM orders GROUP BY product HAVING COUNT(order_id) > 1;

      这将返回一个结果集,其中每个产品在每个订单上的数量都被计算出来,但只包括那些在每个订单上出现两次或更多的产品。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部