22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT a.WDate ,
a.Model ,
a.Judge ,
COUNT(*) 判定 ,
CAST(CONVERT (DECIMAL(18, 2), 100 * CAST(COUNT(*) AS FLOAT)
/ CAST(( SELECT COUNT(*)
FROM [Hyres].[dbo].[Hyres_W] b
WHERE a.WDate = b.WDate
AND a.Model = b.Model
) AS FLOAT)) AS VARCHAR) + '%'
FROM [Hyres].[dbo].[Hyres_W] a
WHERE Judge = 'NG'
GROUP BY a.WDate ,
a.Model ,
a.Judge;
DECLARE @t TABLE (
WID INT PRIMARY KEY,
Model VARCHAR(20),
Judge VARCHAR(20),
SerlNo VARCHAR(50),
WDate DATETIME
)
INSERT INTO @t VALUES (782480,'Z191K','A','XKD7c64090071','2017-03-09')
INSERT INTO @t VALUES (782481,'Z191K','A','XKD7c64090001','2017-03-09')
INSERT INTO @t VALUES (782482,'Z191K','A','XKD7c64090102','2017-03-09')
INSERT INTO @t VALUES (782483,'Z191K','A','XKD7c64090145','2017-03-09')
INSERT INTO @t VALUES (782484,'Z191K','NG','XKD7c64090063','2017-03-09')
INSERT INTO @t VALUES (782485,'Z191K','A','XKD7c64090081','2017-03-09')
INSERT INTO @t VALUES (782486,'Z191K2','A','XKD7c64090094','2017-03-09')
INSERT INTO @t VALUES (782487,'Z191K2','A','XKD7c64090098','2017-03-09')
;WITH cte AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY WDate, Model ORDER BY WID) AS rid,*
FROM @t
)
SELECT WDate
,model
,Judge
,COUNT(1) AS theCnt
,(SELECT COUNT(1) FROM cte b WHERE b.Wdate=a.Wdate) AS theDayCount
,CONVERT(DECIMAL(10,2), COUNT(1)*100.0/(SELECT COUNT(1) FROM cte b WHERE b.Wdate=a.Wdate)) AS [percent]
FROM cte AS a GROUP BY WDate,model,Judge
/*
WDate model Judge theCnt theDayCount percent
2017-03-09 00:00:00.000 Z191K A 5 8 62.50
2017-03-09 00:00:00.000 Z191K NG 1 8 12.50
2017-03-09 00:00:00.000 Z191K2 A 2 8 25.00
*/
select a.WDate,a.Model,a.Judge,count(*) 判定,
cast( convert (decimal(18,2),100*cast(count(*) as float)/cast(b.cnt as float) ) as varchar)+'%'
from [Hyres].[dbo].[Hyres_W] a
outer apply (select count(*) as cnt from [Hyres].[dbo].[Hyres_W] t where by a.WDate = t.WDate and a.Model = t.Model) b
where Judge='NG'
group by a.WDate,a.Model,a.Judge