[英]SQL Select with CTE
What I'm trying to do is get the name of the city with biggest number of orders. 我想做的是获得订单数量最多的城市的名称。 Seems simple enough, yet when I run this code (I had to use CTEs), I get only the number of orders, no city name. 看起来很简单,但是当我运行此代码(必须使用CTE)时,我只会得到订单数量,而没有城市名称。
WITH CityOrder AS
(
SELECT City
FROM Person.Address JOIN Sales.SalesOrderHeader
ON ShipToAddressID = AddressID
),
CitiesOrders AS
(
SELECT City, COUNT(City) AS "NoOfOrders"
FROM CityOrder
GROUP BY City
)
SELECT MAX("NoOfOrders") FROM CitiesOrders;
I tried to change last line to 我试图将最后一行更改为
SELECT City, MAX("NoOfOrders") FROM CitiesOrders;
But then, it shows all the cities with their orders. 但随后,它将显示所有城市及其订单。 I'm pretty sure I'm not seeing some simple mistake. 我敢肯定我没有看到一些简单的错误。 Any advice? 有什么建议吗?
Order your results and take top 1 but with ties in case several cities have same number of orders: 订购结果并获得前1名,但如果几个城市的订单数相同,则并列并列:
...
SELECT TOP 1 WITH TIES *
FROM CitiesOrders
ORDER BY NoOfOrders DESC
Try this! 尝试这个!
select top 1 * from
(
SELECT City,count(1) as x
FROM Person.Address JOIN Sales.SalesOrderHeader
ON ShipToAddressID = AddressID
group by City
) order by x desc
WITH CityOrder AS
(
SELECT City
FROM Person.Address JOIN Sales.SalesOrderHeader
ON ShipToAddressID = AddressID
),
CitiesOrders AS
(
SELECT City, COUNT(City) AS "NoOfOrders"
FROM CityOrder
GROUP BY City
)
SELECT * from CitiesOrders order by "NoOfOrders" desc limit 1;
you write perfect query but a little bit is missing there. 您编写了完美的查询,但是那里缺少一点。 You can use your query with Group by
. 您可以对Group by
使用查询。
SELECT City, MAX("NoOfOrders") FROM CitiesOrders group by City
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.