mysql - MySQL 查询中的 IF Else count(*) ?

标签 mysql

我有一个名为 view_date_time_recordsview

enter image description here

我在这里想做的是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/

相关文章:

mysql - 如何为mysql数据库中的一列分配顺序值?

php - 查询 SELECT 语句具有不同的列数

mysql - 案例表达与案例陈述

mysql - 删除WordPress表的最后一条记录

php - 使用 for 循环将数组实例插入表中

php - 使用 JQuery 与 mySQL 混淆

javascript - 当 <option> 来自使用 php mysqli_query 的 sql 时,onchange 不会触发

java - 使用Java通过SSH连接远程MySQL数据库

Mysql SELECT 缩小搜索

php/mysql - 如何获得用户排名?