I am sure this is a simple fix, but can not figure it out. I have a COUNT function that needs to count the total number of Rentals. Alone, the function works just fine. I have tried using DISTINCT, tweaking the GROUP BY, and ORDER BY, but to not avail.
When I add the DATEDIFF function to get the NumberofDays rented, the COUNT function does not work the way as intended. I should be getting some results with "2" instead of "1". Note that I need to order by the Rentals.Boat_ID. Here is my code and table results. Thanks
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 |
EXPECTED TABLE/RESULTS:
| 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 |
CodePudding user response:
seems like you need to group only by brand and get sum of rented days :
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;
