我有一个名为 view_date_time_records
的 view
我在这里想做的是count(*)
记录是否小时
大于8小时
或小于6小时
如果 1 行
大于或等于 (>=) 8 小时
,则应计为 1
和
如果我的 1 行
小于或等于 (<=) 6 小时
,则应计为 0.5
例如:
我有 3 行
,小时
值为 10,10,5
这意味着,输出是:2.5
我只想在我的查询上执行此操作,而不是在我的 php 代码上执行此操作。
我只有这样的简单查询
从 view_date_time_records 中选择计数(ACNo),其中小时 >= 8
仍在尝试探索此类查询的条件。
最佳答案
您可以在此处使用条件求和:
SELECT
SUM(CASE WHEN hours >= 8 THEN 1 ELSE 0 END) AS greater_than_8,
SUM(CASE WHEN hours <= 6 THEN 0.5 ELSE 0 END) AS less_than_6
FROM view_date_time_records;
上面的查询将给出表级报告。例如,如果您想针对每个帐户报告这些信息,您可以尝试:
SELECT
ACNo,
SUM(CASE WHEN hours >= 8 THEN 1 ELSE 0 END) AS greater_than_8,
SUM(CASE WHEN hours <= 6 THEN 0.5 ELSE 0 END) AS less_than_6
FROM view_date_time_records
GROUP BY
ACNo;
编辑:
根据@Akina的建议,我们可以尝试下面更简洁的形式:
SELECT
SUM(hours >= 8) AS greater_than_8,
SUM(hours <= 6) / 2 AS less_than_6
FROM view_date_time_records;
关于mysql - MySQL 查询中的 IF Else count(*) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676218/