【问题标题】:COUNT function not counting correctly with DATEDIFF使用 DATEDIFF 无法正确计数的 COUNT 函数
【发布时间】:2021-07-31 05:08:07
【问题描述】:

我确信这是一个简单的修复,但无法弄清楚。我有一个 COUNT 函数需要计算出租的总数。单独,该功能工作得很好。我曾尝试使用 DISTINCT,调整 GROUP BY 和 ORDER BY,但无济于事。

当我添加 DATEDIFF 函数来租用 NumberofDays 时,COUNT 函数无法按预期方式工作。我应该用“2”而不是“1”得到一些结果。请注意,我需要按 Rentals.Boat_ID 订购。这是我的代码和表格结果。谢谢

SELECT
    BOATS.Boat_Brand,
    COUNT(RENTALS.Boat_ID) AS NumberofRentals,
    DATEDIFF(Day, RENTALS.Rental_StartDay, RENTALS.Rental_EndDay)+1) as NumberofDaysRented
FROM RENTALS
INNER JOIN BOATS
    ON RENTALS.Boat_ID = BOATS.Boat_ID 
GROUP BY
    BOATS.Boat_Brand,
    RENTALS.Rental_StartDay,
    RENTALS.Rental_EndDay
ORDER BY
    COUNT(RENTALS.Boat_ID) DESC;
Boat_Brand NumberofRentals NumberofDaysRented
Blue Martin 1 20
Blue Martin 1 35
Boston 1 52
Cherubini 1 11
Dufour 1 10
Eagle Craft 1 19
Motor Yacht 1 17
Motor Yacht 1 47
Grady-White 1 1
Horizon 1 22
Lemsteraak 1 19
Lund 1 64
Mastercraft 1 19
Mastercraft 1 1
Nauticat 1 10
Tracker 1 18
Tracker 1 1
Viking 1 20
Yamaha 1 20

预期表格/结果:

Boat_Brand NumberofRentals NumberofDaysRented
Blue Martin 2 55
Motor Yacht 2 64
Mastercraft 2 20
Tracker 2 19
Boston 1 52
Cherubini 1 11
Dufour 1 10
Eagle Craft 1 19
Grady-White 1 1
Horizon 1 22
Lemsteraak 1 19
Lund 1 64
Nauticat 1 10
Viking 1 20
Yamaha 1 20

【问题讨论】:

  • 你能发布你期望的结果吗?
  • 您的 GROUP BY 需要在 SELECT 语句中包含所有非聚合列
  • 请提供样本数据和所需的输出
  • 我认为您不需要 RENTALS.Rental_StartDay、RENTALS.Rental_EndDay。将这些字段添加到 group by 只会按品牌计算当天租用和归还的船只数量。我认为您将不得不做更多的工作并计算出每艘船的租赁时间跨度,然后按品牌平均结果。
  • @AntonínLejsek 我已经添加了预期的结果,谢谢

标签: sql database sql-server-2008 computer-science


【解决方案1】:

似乎您只需要按品牌分组并获得租用天数:

SELECT
    BOATS.Boat_Brand,
    COUNT(RENTALS.Boat_ID) AS NumberofRentals,
    SUM(DATEDIFF(Day,RENTALS.Rental_StartDay,RENTALS.Rental_EndDay) + 1)) as NumberofDaysRented
FROM
    RENTALS
    INNER JOIN BOATS ON RENTALS.Boat_ID = BOATS.Boat_ID
GROUP BY
    BOATS.Boat_Brand
ORDER BY
    COUNT(RENTALS.Boat_ID) DESC;

【讨论】:

  • 非常感谢!!!你完美地修复了它。非常感谢您的回答。
猜你喜欢
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多