获取前 9 条记录并再创建一条记录,在 MySQL 中将作为“其他”

Kam*_*mmy 5 mysql stored-procedures optimization

我正在从一个表中获取记录,其中一个字段计数,另一个字段作为名称。我只想要 10 条记录。其中 9 条记录给了我字段及其计数。但我想将 10 条记录显示为“其他”,所有剩余字段都带有计数。这有点像包装记录。下面是表格内容。

emp_id | designation

 1   |   software Engg.

 2   |   software Engg.

 3   |   Project Manager
Run Code Online (Sandbox Code Playgroud)

不少于10个指定。

And I want to show first 10 records as
Software Engineers  20
Project Manager     5
....
....
....
Others    50
Run Code Online (Sandbox Code Playgroud)

有什么方法可以为 mysql db 进行 SQL 查询,以便在我为“其他”添加记录计数的应用程序级别快速并节省时间?

请建议我如何以有效的方式使其成为可能。

Mar*_*ian 2

我不熟悉该语言的 MySQL 风格,但我将向您展示我的 T-SQL(sql server)解决方案。

WITH cities (Cnt, CountryCode, Id) AS (
  SELECT TOP 100 PERCENT COUNT(c.CityId) AS Cnt, c.CountryCode, ROW_NUMBER() OVER (ORDER BY COUNT(c.CityId) desc) AS ID
  FROM dbo.City c
  GROUP BY c.CountryCode
  ORDER BY 1 desc
)
SELECT c.Cnt, c.CountryCode
FROM Cities c
WHERE c.id <= 9
UNION
SELECT SUM(cnt), 'Others' AS CountryCode
FROM Cities
WHERE id > 9
ORDER BY cnt DESC
Run Code Online (Sandbox Code Playgroud)

我使用我的一个表 - City(CityId, CountryCode) 编写了代码,我知道最大的挑战不是使用表转换查询,而是将其转换为在 MySQl 中工作,因为我不知道是否可以那里有 CTE(CTE = 公共表表达式,类似于使用关键字WITH 构建的内存中的表)。