基础算法7:从数据库某个字段中取出现次数最多的几条数据形成“热门xxx”

简介:

如题所示,有时候我们需要从数据库中的某个表中取出某个字段的数据,并根据其出现的频率在前台页面中显示“热门城市”、“热门商品”等信息。比如说我们要取出所有航线中的“热门城市”,可以这样做:

(1)数据在数据库中是这样的:

wKiom1czVEbxkDl0AABsbJonIwU594.png

在这里,我们需要查出所有的“出发城市”和“到达城市”,并对每个城市进行计数根据其出现次数来取出几个出现次数最多的城市为热门城市

注:将多个字段的数据合并在一起并且不经过去重处理,可以使用下面这个SQL语句:

1
select  DEPARTURE_AIRPORT  from  USR_AIR_LINE  union  all  select  ARRIVAL_AIRPORT  from  USR_AIR_LINE;

(2)对取出的数据进行计数,排序以及求出最后的“热门城市”:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package  cn.zifangsky.base;
 
import  java.io.BufferedReader;
import  java.io.File;
import  java.io.FileReader;
import  java.util.ArrayList;
import  java.util.Collections;
import  java.util.Comparator;
import  java.util.HashMap;
import  java.util.List;
import  java.util.Map;
import  java.util.Map.Entry;
 
public  class  PopAirportDemo {
 
     public  static  void  main(String[] args)  throws  Exception {
         // 读文件
         BufferedReader reader =  new  BufferedReader(
                 new  FileReader( new  File( "C:/Users/Administrator/Desktop/airport.txt" )));
         String temp =  "" ;
         List<String> airportCodes =  new  ArrayList<String>();  // 城市三字码集合
 
         while  ((temp = reader.readLine()) !=  null ) {
             airportCodes.add(temp);
         }
         reader.close();
 
         Map<String, Integer> countMap =  new  HashMap<String, Integer>();   //<城市三字码,总次数>
         //遍历List形成<城市三字码,总次数>键值对
         for  (String code : airportCodes) {
             if  (!countMap.containsKey(code)) {
                 countMap.put(code,  1 );
             else  {
                 countMap.put(code, countMap.get(code) +  1 );
             }
 
         }
 
         // 排序
         List<Map.Entry<String, Integer>> list =  new  ArrayList<Map.Entry<String, Integer>>(countMap.entrySet());
         Collections.sort(list,  new  Comparator<Map.Entry<String, Integer>>() {
             //自定义排序
             public  int  compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
                 return  o2.getValue().compareTo(o1.getValue());
             }
         });
 
         List<String> result =  new  ArrayList<String>();   //热门城市集合
         int  point =  0 ;
         for  (Map.Entry<String, Integer> mapping : list) {
             // System.out.println(mapping.getKey() + " -> " +
             // mapping.getValue());
             result.add(mapping.getKey());
             point++;
             //这里取5个热门城市
             if  (point >=  5 )
                 break ;
         }
 
         System.out.println(result);
     }
 
}

注:我这里为了简化操作,已经把所有的城市三字码保存到“airport.txt”这个文件中了,这里只专注于整个算法流程而不考虑JDBC等问题



本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1772447,如需转载请自行联系原作者

相关文章
|
4天前
|
SQL 关系型数据库 MySQL
MySQL数据库中给表添加字段并设置备注的脚本编写
通过上述步骤,你可以在MySQL数据库中给表成功添加新字段并为其设置备注。这样的操作对于保持数据库结构的清晰和最新非常重要,同时也帮助团队成员理解数据模型的变化和字段的具体含义。在实际操作中,记得调整脚本以适应具体的数据库和表名称,以及字段的详细规范。
19 8
|
10天前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
25 5
|
10天前
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
26 6
|
19天前
|
编解码 算法 图形学
同一路RTSP|RTMP流如何同时回调YUV和RGB数据实现渲染和算法分析
我们播放RTSP|RTMP流,如果需要同时做渲染和算法分析的话,特别是渲染在上层实现(比如Unity),算法是python这种情况,拉两路流,更耗费带宽和性能,拉一路流,同时回调YUV和RGB数据也可以,但是更灵活的是本文提到的按需转算法期望的RGB数据,然后做算法处理
|
20天前
|
SQL 存储 数据处理
"SQL触发器实战大揭秘:一键解锁数据自动化校验与更新魔法,让数据库管理从此告别繁琐,精准高效不再是梦!"
【8月更文挑战第31天】在数据库管理中,确保数据准确性和一致性至关重要。SQL触发器能自动执行数据校验与更新,显著提升工作效率。本文通过一个员工信息表的例子,详细介绍了如何利用触发器自动设定和校验薪资,确保其符合业务规则。提供的示例代码展示了在插入新记录时如何自动检查并调整薪资,以满足最低标准。这不仅减轻了数据库管理员的负担,还提高了数据处理的准确性和效率。触发器虽强大,但也需谨慎使用,以避免复杂性和性能问题。
28 1
|
20天前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
40 1
|
25天前
|
缓存 运维 监控
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
打造稳定高效的数据引擎:数据库服务器运维最佳实践全解析
|
6天前
|
SQL 存储 数据库
MSSQL遍历数据库根据列值查询数据
【9月更文挑战第12天】在 SQL Server 中,可以通过游标或临时表遍历数据库并根据列值查询数据。示例展示了如何创建临时表存储数据库名,并通过循环遍历这些名称来执行特定查询。需替换 `YourTableName`、`YourColumnName` 和 `YourValue` 为实际值。此方法要求有足够权限访问各数据库。若无跨库权限,需分别执行查询。
|
12天前
|
前端开发 数据库 开发者
数据模型(数据库表设计)生成代码
BizWorks ToolKit 插件集成 Mybatis-Plus 代码生成工具,支持从数据库表批量生成代码,简化开发流程。本文详细介绍配置方法及项目示例,包括配置文件格式、生成选项及具体操作步骤,帮助开发者快速实现代码同步更新。配置文件 `.mp.yaml` 支持自定义输出目录、生成组件等,适用于多种项目结构。
26 0