SQL count,其余字段

2025-01-25 01:40:18
推荐回答(5个)
回答1:

答案是:这是不可能的!

你不使用Group by是没办法统计、同时还有输出其它字段。

聚合函数是必须要配合group by一起使用的,这是规矩!

下面的答案是错误的:
select c,(select count(b) from 表) as b个数 from 表

select t1.c, t2.b个数
from 表 t1, (select count(b) as b个数 from 表) t2

因为select count(b) from 表相当于是统计表中有多少条记录,最后的结果是回取出所以的c字段的值,同时后面是表的记录数。

先给你一个实现,但必须用到Group by
统计年和月,天和小时你自己参考咯。
--统计年
select year(t1.year )as year , count(t1.b),
from 表 t1
group by year(t1.year)

--统计月
select t1.year,t1.month, count(t1.b),
from (select b
,year(c) as year --取年
,month(c) as month --取月
,day(c) as day --取天
,datepart(Hour,c) as hour --取小时
from 表) t1
group by t1.year,t1.month

另外说明一下:
1.再统计天时要指定对应的年月(即对年月分组)。同理,在统计小时是要指定对应的年月日
2.SqlServer中是没有Hour函数的,要取到时间的小时数可以使用函数:datepart()。

回答2:

给你个思路:

select c,(select count(b) from 表) as b个数 from 表


select t1.c, t2.b个数
from 表 t1, (select count(b) as b个数 from 表) t2

-------------------------------
呵,需求怎么又变了?
感觉由一个问题又完全变成了另一个问题,看来你自己对需求都不是很理解吧?

给你个新思路吧(只能根据你需求大概列下思路:根据不同的时间单位进行对c转换后截取然后用group by分组求和即可):

年:
select year(c) as 年份,count(*) as 数量 from 表 t1 group by year(c)

月:
select left(convert(varchar(10),c,112),6) as 月份,count(*) as 数量 from 表 t1 group by left(convert(varchar(10),c,112),6)

日:
select convert(varchar(10),getdate(),112) as 日,count(*) as 数量 from 表 t1 group by convert(varchar(10),getdate(),112)

小时:
select hour(c) as 小时,count(*) as 数量 from 表 t1 group by hour(c)

回答3:

select c,(select count(b) from 表) as b个数 from 表


select t1.c, t2.b个数
from 表 t1, (select count(b) as b个数 from 表) t2

赞成
但是如果有连接条件的话,得改下.

回答4:

select
count(distinct
aaa)
from
test

回答5:

select a,c ,(select count(b) from test1) as b from test1

按天:1号的
select count(a) from tb where day(c)=1
按月:一月份的
select count(a) from tb where Month(c)=1
按年:
select count(a) from tb where Year(c)=2010
不知道你要是这个不是
_______________________________________________________
要统计的字段你随便改!
年的:
select year(c) as year,count(a) from tb group by year(c)
月的:
select month(c) as year,count(a) from tb group by month(c)

天:day(c)
select day(c) as year,count(a) from tb group by day(c)