我有两个表:Customer和ParkingTransaction。我想展示最常使用该批次的前10位客户。 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
这是我的输出
我面临的问题是:我想从Customer表中提取FirstName和LastName字段,而不是仅仅按CustomerKey进行排序。我已经弄乱了JOINS,但还没有提出解决方案。
谢谢!
答案 0 :(得分:1)
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
是不必要的。
答案 1 :(得分:1)
这是一种方式:
SELECT CustomerKey, c.firstname, c.lastname, count(*) as 'Usage'
FROM ParkingTransaction pt join
customer c
on pt.customerkey = c.customerkey
GROUP BY pt.CustomerKey, c.firstname, c.lastname,
ORDER BY 'Usage' DESC
limit 10