根据表中数据count后生产百分率,该如何写
根据表中数据count后生产百分率,该怎么写?
有张表A
ID FID ATIME BTIME
1 01 2015-01-01 2015-01-10
2 01 2015-01-01 2014-12-12
3 02 2015-03-01 2015-04-10
4 02 2015-03-01 2014-02-10
5 02 2015-03-01 2014-02-12
6 ...................................
要用语句生产这样的一张表
名称 总数量 及时时间数量 延迟时间 数量 及时率 延迟率
01 2 1 1 (1/2)% (1/2)%
02 3 2 1 (2/3)% (1/2)%
,,,,,,,,,,,,,,,,,,,,,,,,,
请问一下这个语句该怎么写?
谢谢!
------解决思路----------------------
有张表A
ID FID ATIME BTIME
1 01 2015-01-01 2015-01-10
2 01 2015-01-01 2014-12-12
3 02 2015-03-01 2015-04-10
4 02 2015-03-01 2014-02-10
5 02 2015-03-01 2014-02-12
6 ...................................
要用语句生产这样的一张表
名称 总数量 及时时间数量 延迟时间 数量 及时率 延迟率
01 2 1 1 (1/2)% (1/2)%
02 3 2 1 (2/3)% (1/2)%
,,,,,,,,,,,,,,,,,,,,,,,,,
请问一下这个语句该怎么写?
谢谢!
------解决思路----------------------
WITH t(ID,FID,ATIME,BTIME)
AS
(
SELECT 1, '01', '2015-01-01', '2015-01-10' UNION ALL
SELECT 2, '01', '2015-01-01', '2014-12-12' UNION ALL
SELECT 3, '02', '2015-03-01', '2015-04-10' UNION ALL
SELECT 4, '02', '2015-03-01', '2014-02-10' UNION ALL
SELECT 5, '02', '2015-03-01', '2014-02-12'
)
SELECT FID AS [名称]
,[总数量]
,[及时]
,[延迟]
,'('+CAST([及时] AS VARCHAR)+'/'+CAST([总数量] AS VARCHAR)+')%' [及时率]
,'('+CAST([延迟] AS VARCHAR)+'/'+CAST([总数量] AS VARCHAR)+')%' [延迟率]
FROM (
SELECT FID
,COUNT(*) AS [总数量]
,SUM(CASE WHEN ATIME>BTIME THEN 1 ELSE 0 END) [及时]
,SUM(CASE WHEN ATIME<BTIME THEN 1 ELSE 0 END) [延迟]
FROM t
GROUP BY FID ) a