Php 单个SQL查询中的百分比

Php 单个SQL查询中的百分比,php,sql,sqlite,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_

目前,我有两个几乎相同的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
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
选择计数(runner.id)
从入口
在runner.entry\u id=entry.id上加入runner
在race.id=entry.race\u id上加入比赛
在马上加入马。id=entry.horse\u id
其中STRFTIME(“%Y-%m-%d”,race.datetime)<:max\u日期和
STRFTIME(“%Y-%m-%d”,race.datetime)>=:min\u日期和
entry.trainer\u id=:trainer\u id和
race.course\u id=:course\u id和
race.type=:race\u类型
查找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
race.type = :race_type
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
选择计数(runner.id)
从入口
在runner.entry\u id=entry.id上加入runner
在race.id=entry.race\u id上加入比赛
在马上加入马。id=entry.horse\u id
其中STRFTIME(“%Y-%m-%d”,race.datetime)<:max\u日期和
STRFTIME(“%Y-%m-%d”,race.datetime)>=:min\u日期和
entry.trainer\u id=:trainer\u id和
race.course\u id=:course\u id和
runner.position=1和
race.type=:race\u类型
然后,我计算PHP代码中x=y记录的百分比。如果从一个SQL查询返回一个百分比,我将如何做同样的事情


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

运行您的第一个查询,并将select更改为:

SUM(CASE WHEN runner.position = 1 THEN 1 ELSE 0 END) as position1Count, COUNT(runner.id) as total
然后将postionCount除以PHP中的总数。

perfect:)并查询到0.5秒。非常感谢你。