繁体   English   中英

SQL减去两个独立的计数

[英]SQL subtract two independent counts

我有一个相当复杂的SQL语句,我试图编写,并不知道如何做。

基本上,我正在寻找聊天室中最活跃的人(我的聊天存储在SQL表中),但是减去他们说特定消息TIMES乘以减法的乘数的次数。

这是“基础”查询,可以很好地找出有人聊天的频率:

SELECT users.name, count(*) as count1, users.flag2, users.flag1
            FROM chat
            INNER JOIN users
            ON chat.userid=users.id
            WHERE channel=$channel
            GROUP BY userid
            ORDER BY count DESC
            LIMIT 100;

此查询将告诉我用户说出我希望减去以下倍数的特定消息的次数

SELECT userid, count(*) as count2
            FROM chat
            WHERE channel=$channel AND text = '[some message]'
            GROUP BY userid

我正在寻找的是第一个让“count”实际上等于“ count1 - count2 * 10 ”的查询。 我有一个相当艰难的时间来弄清楚如何将这两个查询组合成一个。 我将使用生成的“值”作为ORDER BY / LIMIT子句,所以我需要SQL实际执行此计算而不是在多个查询中执行此操作...

   SELECT T1.name,(count1 - 10* COALESCE( count2,0) ) as NetCount
   FROM
    (
            SELECT userid,users.name, count(*) as count1
            FROM chat
            INNER JOIN users
            ON chat.userid=users.id
            WHERE channel=$channel
            GROUP BY userid,users.name
            ORDER BY count DESC
            LIMIT 100;
     ) as T1

  LEFT JOIN

  (
            SELECT userid, count(*) as count2
            FROM chat
            WHERE channel=$channel AND text = '[some message]'
            GROUP BY userid
  ) as T2

  ON T1.userid=T2.userid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM