使用SQL计算利用率
我有下表:- 我需要计算卡车利用率&最终输出应如下所示:- 一,。利用率(每日):- 二,。5月1日至5月3日的平均利用率:44.4% [(33.3%+33.3%+66.7%)/3] iii.5月1日至5月6日的平均利用率:55.6% [(33.3%+33.3%+66.7%+66.7%+66.7%+66.7%)/6]使用SQL计算利用率,sql,sql-server,Sql,Sql Server,我有下表:- 我需要计算卡车利用率&最终输出应如下所示:- 一,。利用率(每日):- 二,。5月1日至5月3日的平均利用率:44.4% [(33.3%+33.3%+66.7%)/3] iii.5月1日至5月6日的平均利用率:55.6% [(33.3%+33.3%+66.7%+66.7%+66.7%+66.7%)/6] 如何生成上述输出?您可以像这样使用SUM和COUNT DECLARE @SampleDAta AS TABLE ( Truck varchar(10), Sta
如何生成上述输出?您可以像这样使用
SUM
和COUNT
DECLARE @SampleDAta AS TABLE
(
Truck varchar(10),
Status varchar(10),
Date date
)
INSERT INTO @SampleDAta
(
Truck,
Status,
[Date]
)
VALUES
('A', 'OFF', '2017-05-01'),
('A', 'OFF', '2017-05-02'),
('A', 'OFF', '2017-05-03'),
('A', 'OFF', '2017-05-04'),
('A', 'OFF', '2017-05-05'),
('A', 'OFF', '2017-05-06'),
('B', 'ON', '2017-05-01'),
('B', 'ON', '2017-05-02'),
('B', 'ON', '2017-05-03'),
('B', 'ON', '2017-05-04'),
('B', 'ON', '2017-05-05'),
('B', 'ON', '2017-05-06'),
('C', 'OFF', '2017-05-01'),
('C', 'OFF', '2017-05-02'),
('C', 'ON', '2017-05-03'),
('C', 'ON', '2017-05-04'),
('C', 'ON', '2017-05-05'),
('C', 'ON', '2017-05-06')
-- I.
SELECT sd.[Date],
CAST(100.00 * SUM(CASE WHEN sd.Status = 'ON' THEN 1 ELSE 0 END)/ COUNT(sd.Truck) AS decimal(10,2)) AS [Utilisation Rate]
FROM @SampleDAta sd
GROUP BY sd.[Date]
-- II.
;WITH temp AS
(
SELECT sd.[Date],
CAST(100.00 * SUM(CASE WHEN sd.Status = 'ON' THEN 1 ELSE 0 END)/ COUNT(sd.Truck) AS decimal(10,2)) AS [Utilisation Rate]
FROM @SampleDAta sd
GROUP BY sd.[Date]
)
SELECT
CAST(SUM(t.[Utilisation Rate])/ COUNT(*) AS decimal(10,2)) AS [Utilisation Rate]
FROM temp t
WHERE t.[Date] BETWEEN '2017-05-01' AND '2017-05-03'
-- III.
;WITH temp AS
(
SELECT sd.[Date],
CAST(100.00 * SUM(CASE WHEN sd.Status = 'ON' THEN 1 ELSE 0 END)/ COUNT(sd.Truck) AS decimal(10,2)) AS [Utilisation Rate]
FROM @SampleDAta sd
GROUP BY sd.[Date]
)
SELECT
CAST(SUM(t.[Utilisation Rate])/ COUNT(*) AS decimal(10,2)) AS [Utilisation Rate]
FROM temp t
WHERE t.[Date] BETWEEN '2017-05-01' AND '2017-05-06'
演示链接:您尝试过什么吗?这是作业吗?其他人能看到这些图片吗?他们正在为我显示断开的链接。是否有遗漏的日期。如果是,两个日期之间的
平均利用率
应该考虑这个问题吗?第二个和第三个查询可以这样简化