【问题标题】:Dividing two COUNTS from mysql从mysql中划分两个计数
【发布时间】:2022-12-06 23:13:11
【问题描述】:

朋友们,我正在尝试从 MySQL 中划分两个 COUNT(*): 我有这个查询:

SELECT 'Total ', COUNT(*) 
FROM root4 
WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE()  
UNION 
SELECT  'Good', COUNT(*) 
FROM root4 
WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE() 
AND testresult ='OK'

此查询的输出如下所示:

________________________
|Total | COUNT(*) |
________________________
|Total| 42       | 
|Good | 34       | 
_______________________
                     

我想要实现的是在“Good”下创建另一行称为“FPY”,但值是“Good”除以“Total”的百分比。 是这样的:

________________________
|Total | COUNT(*) |
________________________
|Total| 42       | 
|Good | 34       | 
|FPY  | 80.95    |
_______________________

我试着像菜鸟一样把它们分开:

SELECT 'Total ', COUNT(*) 
FROM root4 
WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE()  
UNION 
SELECT  'Good', COUNT(*) 
FROM root4 WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE() 
AND testresult ='OK'                         
UNION 
SELECT 'FPY',  (COUNT(*) 
FROM root4 
WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE() / 
UNION 
SELECT  'Good', COUNT(*) 
FROM root4 
WHERE str_to_date(DATE, '%d.%m.%Y') = CURDATE() 
AND testresult ='OK')

当然,这是行不通的......

注意:Colum DATE 是 varchar,这就是我使用 str_to_date 的原因。

【问题讨论】:

标签: mysql


【解决方案1】:

我认为您可能需要一个“SubQuery”。

是这样的:

SELECT 
    root4.Count(*) AS Total,
    root4_1.Good AS Good,
    root4.COUNT(*) / root4_1.Good AS FYP
FROM 
    root4,
    (
        SELECT
            COUNT(*) AS Good
        FROM 
            root4 
        WHERE 
            str_to_date(DATE, '%d.%m.%Y') = CURDATE() 
        AND 
            testresult ='OK'  
    )AS root4_1 
WHERE 
    str_to_date(DATE, '%d.%m.%Y') = CURDATE()  

另外,看到这个问题,这是类似的:How to SELECT based on value of another SELECT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2013-08-14
    • 2012-12-26
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多