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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)