如何用SQL存储过程查询跟踪表中5个最受关注的库存商品?
如何用SQL存储过程列出Top5最受关注的商品
示例跟踪表结构及数据
| ID | KullaniciID | StokKodu | Tarih |
|---|---|---|---|
| 1 | 1 | AXERA | 2023-02-01 15:10:53.193 |
| 2 | 1 | ERKMF | 2023-02-02 10:27:17.373 |
| 3 | 2 | AXERA | 2023-02-02 10:27:16.643 |
| 4 | 3 | AXERA | 2023-02-06 16:27:28.873 |
基础SQL查询(获取Top5商品)
核心逻辑是按StokKodu分组统计访问次数,再按次数降序排序取前5条。不同SQL方言的写法略有差异:
SQL Server 版本
SELECT TOP 5 StokKodu, COUNT(*) AS IzlenmeSayisi -- 访问次数 FROM TakipTablonuz -- 替换为你的跟踪表名 GROUP BY StokKodu ORDER BY IzlenmeSayisi DESC;
MySQL 版本
SELECT StokKodu, COUNT(*) AS IzlenmeSayisi FROM TakipTablonuz GROUP BY StokKodu ORDER BY IzlenmeSayisi DESC LIMIT 5;
Oracle 版本
SELECT StokKodu, COUNT(*) AS IzlenmeSayisi FROM TakipTablonuz GROUP BY StokKodu ORDER BY IzlenmeSayisi DESC FETCH FIRST 5 ROWS ONLY;
封装为存储过程
将上述逻辑封装成可复用的存储过程:
SQL Server 存储过程
CREATE PROCEDURE GetTop5EnCokIzlenenUrunler AS BEGIN SET NOCOUNT ON; SELECT TOP 5 StokKodu, COUNT(*) AS IzlenmeSayisi FROM TakipTablonuz GROUP BY StokKodu ORDER BY IzlenmeSayisi DESC; END;
调用方式:
EXEC GetTop5EnCokIzlenenUrunler;
MySQL 存储过程
DELIMITER // CREATE PROCEDURE GetTop5EnCokIzlenenUrunler() BEGIN SELECT StokKodu, COUNT(*) AS IzlenmeSayisi FROM TakipTablonuz GROUP BY StokKodu ORDER BY IzlenmeSayisi DESC LIMIT 5; END // DELIMITER ;
调用方式:
CALL GetTop5EnCokIzlenenUrunler();
内容的提问来源于stack exchange,提问作者Ahmet Enes Söylemez
相关产品推荐
相关产品推荐

