sql count然后每行的总和具有唯一值

时间:2017-10-30 08:08:51

标签: php mysql sql

我使用此查询来计算值: -

SELECT (SELECT count(u.`refered`) FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0

但我想在每个计数中添加静态值,如此查询: -

SELECT (SELECT count(u.`refered`),sum(25) FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0

但是这没有用:(请告诉我哪里错了?

例如: -

我只想在计数得到结果8然后我在每个计数中得到计数8加上4值然后我想回答32.这是我想要的。

3 个答案:

答案 0 :(得分:0)

SELECT (SELECT count(u.`refered`) + 25 FROM user u WHERE u.refered = user.user_id 
and launch=1) as coun, user_id FROM user HAVING coun > 0

答案 1 :(得分:0)

您不能在SELECT子句中的一个子查询中选择两列。所以将其移到FROM子句:

SELECT 
  u.coun,
  u.sum25,
  user.user_id 
FROM user 
LEFT JOIN
(
  SELECT 
    refered,
    count(*) as coun,
    sum(25) as sum25
  FROM user
  WHERE launch=1
  GROUP BY refered
) u on u.refered = user.user_id 
HAVING u.coun > 0;

更新:您已添加

  
    

我只是想当计数得到结果8然后我想在每个计数中的计数8添加4值然后我想要回答32.这是我想要的。

  

你的问题。因此,您不希望在原始查询中sum(25),即count(*) * 25,但似乎count(*) * 4。所以在我的查询中用25替换25。

答案 2 :(得分:0)

您无法在一个子选择中返回两个值。您可以使用两个子选择,但最好的解决方案是使用这样的自连接:

s.showThis = function(obj) {
   //Hides all
   angular.forEach(s.obj, function(ob) {
      if(ob.name != obj.name) {
           ob.show = false;
      }
    });

   //Toggles current object show/hide
   obj.show = !obj.show;
}

demo