php - 单个 SQL 查询中的百分比

标签 php sql sqlite

我目前有两个几乎相同的 SQL 查询,用于我的 SQLITE3 数据库。

查找匹配记录的总数。

SELECT COUNT(runner.id)
FROM entry
JOIN runner ON runner.entry_id = entry.id
JOIN race ON race.id = entry.race_id
JOIN horse ON horse.id = entry.horse_id
WHERE STRFTIME('%Y-%m-%d', race.datetime) < :max_date AND
STRFTIME('%Y-%m-%d', race.datetime) >= :min_date AND
entry.trainer_id = :trainer_id AND
race.course_id = :course_id AND
race.type = :race_type

查找 x = y 的匹配记录的总数。

SELECT COUNT(runner.id)
FROM entry
JOIN runner ON runner.entry_id = entry.id
JOIN race ON race.id = entry.race_id
JOIN horse ON horse.id = entry.horse_id
WHERE STRFTIME('%Y-%m-%d', race.datetime) < :max_date AND
STRFTIME('%Y-%m-%d', race.datetime) >= :min_date AND
entry.trainer_id = :trainer_id AND
race.course_id = :course_id AND
runner.position = 1 AND
race.type = :race_type

然后我用 PHP 代码计算 x = y 记录的百分比。我如何做同样的事情从单个 SQL 查询返回百分比?

编辑:关于优化,我刚刚将 WHERE 条件切换为更合理的顺序,并添加了一些索引,它从 17 秒减少到 0.1 秒。

最佳答案

运行您的第一个查询并将选择更改为:

SUM(CASE WHEN runner.position = 1 THEN 1 ELSE 0 END) as position1Count, COUNT(runner.id) as total

然后将 postionCount 除以 PHP 中的总数。

关于php - 单个 SQL 查询中的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634141/

相关文章:

php - 如何使用php比较sql中的多个复选框值?

mysql - 将 AVG 与 HAVING 一起使用

python - 如何从表中选择 2 个不同的随机行?

Mysql检查。一天的记录与不同日期的记录 'Same-Store Sales'

ruby-on-rails - 取 postgres 和 sqlite3 中 bool 列的平均值

ios - 在 iMessage 应用程序中使用现有数据库 (Swift)

php - 检索对象数组的键

php - 带有请求和参数的 Laravel 5.4 路由

php - 从 3 个 sql 表收集数据以创建单个结果

mysql查询从数据库字段中搜索逗号分隔的字符串数据