计算表中的重复名称

时间:2013-01-18 00:01:00

标签: mysql sql database join

我有两个表: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

这是我的输出

Output

我面临的问题是:我想从Customer表中提取FirstName和LastName字段,而不是仅仅按CustomerKey进行排序。我已经弄乱了JOINS,但还没有提出解决方案。

谢谢!

2 个答案:

答案 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