• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

求SQL查询语句。在线等

thhui 2008-03-17 11:19:03
刷卡表 a:

a_id checkdate checktime
-----------------------------------
1 2008-02-01 08:00:00
1 2008-02-01 17:00:00
1 2008-02-03 08:00:00
1 2008-02-03 13:00:00
1 2008-02-03 17:00:00
1 2008-02-04 17:00:00
2 2008-02-11 08:00:00
2 2008-02-11 17:00:00
2 2008-02-13 08:00:00
3 2008-02-23 13:00:00
4 2008-02-03 17:00:00
4 2008-02-04 17:00:00


a_id唯一,现在要得出每个人这个月有多少天打卡的统计表
如: a_id=2这个人,刷卡记录表有3条记录,但是只有11号和13号两天。
那么得出的结果要是这样的 :

a_id 天数
-------------------------
2 2




请指教!!!!!!!
谢谢
...全文
70 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
heshengfen123 2008-03-17
select a_id,count(distinct checkdate) 天数 from tt_a group by a_id
回复
lhsxsh 2008-03-17
select a_id,sun(1) as 天数
from (select a_id,checkdate from a group by a_id,checkdate) t
group by a_id
回复
一品梅 2008-03-17
select a_id , count(*) 天数 from (select distinct a_id , checkdate from A) t group by a_id order by a_id
在这里,distinct根据查询所有列找唯一.
回复
dawugui 2008-03-17
create table A(a_id int, checkdate varchar(10) , checktime varchar(10) )
insert into A values(1, '2008-02-01', '08:00:00')
insert into A values(1, '2008-02-01', '17:00:00')
insert into A values(1, '2008-02-03', '08:00:00')
insert into A values(1, '2008-02-03', '13:00:00')
insert into A values(1, '2008-02-03', '17:00:00')
insert into A values(1, '2008-02-04', '17:00:00')
insert into A values(2, '2008-02-11', '08:00:00')
insert into A values(2, '2008-02-11', '17:00:00')
insert into A values(2, '2008-02-13', '08:00:00')
insert into A values(3, '2008-02-23', '13:00:00')
insert into A values(4, '2008-02-03', '17:00:00')
insert into A values(4, '2008-02-04', '17:00:00')
go

select a_id , count(distinct checkdate) 天数 from A group by a_id order by a_id
/*
a_id 天数
----------- -----------
1 3
2 2
3 1
4 2

(所影响的行数为 4 行)
*/

select a_id , count(*) 天数 from (select distinct a_id , checkdate from A) t group by a_id order by a_id
/*
a_id 天数
----------- -----------
1 3
2 2
3 1
4 2

(所影响的行数为 4 行)
*/

drop table A
回复
thhui 2008-03-17
asdadadadasdas
回复
青锋-SS 2008-03-17
破网通,搞的俺慢了一步
回复
wzy_love_sly 2008-03-17
select a_id, count(distinct convert(varchar(10),checkdate,120)) from a
group by a_id
回复
青锋-SS 2008-03-17
select a_id,sun(1) as 天数
from (select a_id,checkdate from a group by a_id,checkdate) t
group by a_id
回复
dawugui 2008-03-17
select a_id , count(*) 天数 from (select distinct a_id , checkdate from a) t group by a_id
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-17 11:19
社区公告
暂无公告