Is there any way I can select the row with the max value of a count? I have
SELECT
"Month",
COUNT( Trip_Id ) AS 'Number of Trips'
FROM
Tor_Bikes AS tb
GROUP BY
"Month";
which gives me a table of each month with its number of trips for that month. I need to find the month that has the most number of trips. How do I do this?
CodePudding user response:
You should use subqueries to achieve that:
SELECT MAX(Number_of_Trips) FROM (SELECT "Month", Count( Trip_Id ) FROM
Tor_Bikes AS tb
GROUP BY
"Month";)
CodePudding user response:
I'm learning SQL myself, so this is by no means canonical.
We all know how to produce such a table:
(SELECT `productID`, count(`productID`) AS `TotalPriceChanges` FROM `ProductCostHistory` GROUP BY `productID`)
ProductID Count(*)
'707' | '3'
'708' | '3'
'709' | '1'
'710' | '1'
'711' | '3'
If I'm understanding correctly, you want to select the Max value of THIS table. Well, you can simply use the above as a derived table - sub query or CTE (Common Table Expression). Using MYSQL it would be something like this:
Select ProductID, max(TotalPriceChanges) FROM
(SELECT `productID`, count(`productID`) AS `TotalPriceChanges` FROM `ProductCostHistory` GROUP BY `productID`) as derivedTable
Group by `ProductID`
We use an alias as
to name the derived table, and instead of using the aggregative function count
we use the function max
. The above works for me.
Final Solution
SELECT Month, Max('Number of Trips') FROM
(
SELECT
"Month",
COUNT( Trip_Id ) AS 'Number of Trips'
FROM
Tor_Bikes AS tb
GROUP BY
"Month" AS DerivedTable;
)
GROUP BY MONTH
CodePudding user response:
Here is the query you are searching for:
SELECT Month, Max('Number of Trips')
FROM
(
SELECT Month, COUNT( Trip_Id ) AS 'Number of Trips'
FROM Trips AS tb
GROUP BY Month
)
CodePudding user response:
I'm new to SQL, correct me if i'm wrong but i think the order by function could give the same result... just with other unwanted results but at least its what you see first :)
Order by the count of Trip ID in descending order after grouping by month..