我有两张桌子:顾客和停车场。我想展示十大最常使用该产品的客户。parkingtrasaction表中的customerkey是连接parkingtransaction和customer的fk。我已经编写了以下代码,其中计算了parkingtransaction表中使用最多的customerkey,它工作得很好……
SELECT TOP 10 CustomerKey
, count(*) as 'Usage'
FROM ParkingTransaction
GROUP BY CustomerKey
HAVING (count(CustomerKey) > 0)
ORDER BY 'Usage' DESC
这是我的输出
Output
我面临的问题是:我想从customer表中提取firstname和lastname字段,而不是仅仅通过customerkey进行排序。我把连接搞砸了,但还没有想出解决办法。
谢谢!
最佳答案
mysql使用LIMIT
而不是TOP
。
SELECT a.FirstName, a.LastName,
COUNT(*) as `Usage`
FROM Customer a
INNER JOIN ParkingTransaction b
ON a.CustomerKey = b.CustomerKey
GROUP BY a.FirstName, a.LastName
ORDER BY `Usage` DESC
LIMIT 10
由于查询使用的是
INNER JOIN
,因此在这种情况下,HAVING COUNT(*) > 0
是不必要的。关于mysql - 计算表中的重复名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14390357/