java - 用于根据所犯错误对列表进行排序的 SQLite 查询
问题描述
我想知道如何根据服务员犯的错误数量来查询数据库。
我有两张桌子是
员工
String employeeTable = "CREATE TABLE " + EMP_TABLE + " ("
+ ID_EMP + " INTEGER PRIMARY KEY, "
+ FIRST_NAME + " TEXT,"
+ LAST_NAME + " TEXT,"
+ PROFIT + " INTEGER);";
错误员工
String mistakeTable = "CREATE TABLE " + MISTAKE_TABLE + " ("
+ ID_MISTAKE + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ ID_WAITER_MISTAKE + " INTEGER,"
+ ID_ORDER_MISTAKE + " INTEGER,"
+ MISTAKE_TOTAL + " INITGER,"
+ " FOREIGN KEY (" + ID_WAITER_MISTAKE + ") REFERENCES " + EMP_TABLE + "(" + ID_EMP + "), "
+ " FOREIGN KEY (" + ID_ORDER_MISTAKE + ") REFERENCES " + ORDER_TABLE + "(" + ID_ORDER + "));";
我正在尝试根据错误表中使用Employee
最多的 来排序列表。Mistakes
ID_WAITER_MISTAKE
String query = SELECT * , COUNT(Mistake_TABLE.ID_Waiter) as Count
FROM EMP_TABLE
ORDER BY Count DESC
解决方案
您必须加入表格,按员工分组并聚合:
SELECT e.ID_EMP, e.FIRST_NAME, e.LAST_NAME,
COUNT(m.ID_MISTAKE) AS Mistake_Count
FROM employeeTable e LEFT JOIN mistakeTable m
ON m.ID_WAITER_MISTAKE = e.ID_EMP
GROUP BY e.ID_EMP, e.FIRST_NAME, e.LAST_NAME
ORDER BY Mistake_Count DESC, e.ID_EMP
在 Java 代码中,您应该像这样构造 sql 字符串:
String query =
"SELECT e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + ", " +
"COUNT(m." + ID_MISTAKE + ") AS Mistake_Count " +
"FROM " + EMP_TABLE + "AS e LEFT JOIN " + MISTAKE_TABLE + " AS m " +
"ON m." + m.ID_WAITER_MISTAKE + " = e." + ID_EMP + " " +
"GROUP BY e." + ID_EMP + ", e." + FIRST_NAME + ", e." + LAST_NAME + " " +
"ORDER BY Mistake_Count DESC, e." + ID_EMP ;
我希望没有错别字。
推荐阅读
- nba-api - 如何计算速度调整后的统计数据?
- aws-lambda - 我们可以使用托管在 GCP 中的 docker 映像部署 AWS Lambda 函数吗?
- java - React 本机 ANDROID 构建失败并在 BasePackageList.java 中出现错误。可变参数不匹配;ApplicationPackage 无法转换为 Package
- docker - 对 Docker 容器中的逻辑应用的 HTTP 调用
- php - bcrypt 将 php 函数哈希中的 node.JS 与选项成本进行比较
- twig - base.html.twig 和 single-cms-page.html.twig 有什么区别?
- python - 如何在 PyQt5 QtChart 中刷新数据?
- python - Discord Bot + Google Cloud Run:“容器无法启动。”
- php - 您可以在按钮 onclick 标记中包含 PHP 变量吗?
- vue.js - vuejs中计算属性计算的替代方法