首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql获取group数量解决方案

2013-09-28 
sql获取group数量现有表如下:idmoneyuser_idproject_id11000.001121000.00113500.0011我现在要根据project

sql获取group数量
现有表如下:
id      money      user_id  project_id
11000.00   1     1
21000.00   1     1
3500.00   1     1

我现在要根据project_id来分组 ,并获得分组的组数的数量。
我现在的slq是:select count(*) from invest_log vl where vl.project_id = 1 group by user_id
得到的结果是3 ,不是我想要的结果 。 正确应该为1

sql该如何改?

[解决办法]
select count(*) 
from (select distinct user_id,project_id from invest_log) as vl 
where vl.project_id = 1 group by user_id

[解决办法]

----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-09-20 09:43:07
-- Version:
--      Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64) 
--Jun 10 2013 20:09:10 
--Copyright (c) Microsoft Corporation
--Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([d] int,[money] numeric(6,2),[user_id] int,[project_id] int)
insert [huang]
select 1,1000.00,1,1 union all
select 2,1000.00,1,1 union all
select 3,500.00,1,1
--------------开始查询--------------------------

select COUNT(DISTINCT(project_id))
from [huang]

----------------结果----------------------------
/* 

-----------
1
*/

[解决办法]
select * from(
select row_number()over(partition by project_id order by project_id)num,* from invest_log)a
where num=1

[解决办法]

select count(user_id) as group_num from 
(select user_id from invest_log vl where vl.project_id = 1 group by user_id) t
  

热点排行