sql语句 如何分组后得到记录总数

sql语句 如何分组后得到记录总数,第1张

SELECT COUNT(*)

FROM (SELECT 分组字段 FROM 表

GROUP BY 分组字段

)别名

或者

SELECT COUNT(*)

FROM (SELECT distinct 分组字段 FROM 表)别名

扩展资料:

SQL分组查询

在SQL Server中使用的分组查询是ORDER BY子句,使用ORDER BY子句要同聚合函数配合使用才能完成分组查询,在SELECT查询的字段中如果字段没有使用聚合函数就必须出现在ORDER BY子句中(即SELECT后边的字段名要么出现在聚合函数中,要么在ORDER BY子句中使用)

在分组查询中还可以配合使用HAVING子句,定义查询条件。

使用group by进行分组查询

在使用group by关键字时,在select列表中可以指定的项目是有限制的,select语句中仅许以下几项:

1、被分组的列

2、为每个分组返回一个值得表达式,例如用一个列名作为参数的聚合函数

3、group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面

sql语句中,关联查询只取分组的一条记录的方法如下:\x0d\x0aselectuserid,ranking,usernamefromtable//查询字段有useridusername\x0d\x0awhereuserid+rankingin//where条件包括userid+rankingin是集合选择关键字\x0d\x0a(\x0d\x0aselectuserid+max(ranking)fromtable//max(ranking)选择ranking列的最大值\x0d\x0agroupbyuserid//根据userid分组\x0d\x0a)\x0d\x0a以上sql中,内层select查出了最大的ranking,根据userid分组,外层查询中选择userid+ranking。

之前碰到过类似问题,研究半天最后通过判断处理的

也就是说前提是你的trade_type列是由固定的数值的,比如1-12 0-10之类

select user_id,sum(decode(trade_type,'4',trade_type)) a1,

           sum(decode(trade_type,'5',trade_type)) a2,

           sum(decode(trade_type,'11',trade_type)) a3,

           sum(decode(trade_type,'12',trade_type)) a4

         from table

      group by user_id


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9738352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存