【问题标题】:Count not matching- MYSQL计数不匹配 - MYSQL
【发布时间】:2022-10-13 14:57:55
【问题描述】:
SELECT dev_block, 
CASE WHEN problem_type = 'Relating to Cultivation' THEN COUNT(dev_block) ELSE 0 END AS RelatingtoCultivation,
CASE WHEN problem_type = 'Relating to storage' THEN COUNT(dev_block) ELSE 0 END AS Relatingtostorage,
CASE WHEN problem_type = 'Relating to transport' THEN COUNT(dev_block) ELSE 0 END AS Relatingtotransport,
CASE WHEN problem_type = 'Relating to marketing' THEN COUNT(dev_block) ELSE 0 END AS Relatingtomarketing,
CASE WHEN problem_type = 'Others' THEN COUNT(dev_block) ELSE 0 END AS OTHERS,
CASE WHEN problem_type = '' THEN COUNT(dev_block) ELSE 0 END AS NoProblem
FROM (SELECT a.dev_block, b.problem_type FROM hd_survey_head a JOIN hd_survey_horti_problems b ON a.survey_id = b.survey_id
WHERE b.problem_head = 'Major Problems being faced for Fruit Crops' AND district = 'SHIMLA') AS z
GROUP BY dev_block


dev_block       RelatingtoCultivation  Relatingtostorage  Relatingtotransport  Relatingtomarketing  Others  NoProblem  
--------------  ---------------------  -----------------  -------------------  -------------------  ------  -----------
BASANTPUR                           0                  0                    0                19209       0            0
CHAUHARA                        11317                  0                    0                    0       0            0
CHAUPAL                        121086                  0                    0                    0       0            0
JUBBAL KOTKHAI                  94635                  0                    0                    0       0            0
KUPVI                               0                  0                    0                 6491       0            0
MASHOBRA                        23572                  0                    0                    0       0            0
NANKHARI                        28695                  0                    0                    0       0            0
NARKANDA                        41885                  0                    0                    0       0            0
RAMPUR                          67094                  0                    0                    0       0            0
ROHRU                           55563                  0                    0                    0       0            0
THEOG                           51964                  0                    0                    0       0            0
TOTU                            34950                  0                    0                    0       0            0

上面的查询给了我这个错误的输出,它只在一列中计算所有我想要做的是计算嵌套查询中的问题并将其显示在列中。

dev_block  problem_type             
---------  -------------------------
RAMPUR     Relating to Cultivation  
RAMPUR     Relating to Cultivation  
RAMPUR     Relating to Cultivation  
RAMPUR     Relating to Cultivation  
RAMPUR     Relating to storage      
RAMPUR     Relating to storage      
RAMPUR     Relating to transport    
RAMPUR     Relating to transport    
RAMPUR     Relating to marketing    
RAMPUR     Relating to marketing    
RAMPUR     Relating to marketing

如您所见,上述数据是嵌套查询的结果拉姆普尔块有问题与营销有关,与运输有关与存储有关也一样,但它很重要关于修炼在上面的查询中

【问题讨论】:

  • '它只在一列中计算' - 真的 - 与营销相关的列也有值?
  • 是的,但是当我看到嵌套查询时,会出现类似的问题与存储有关与运输有关在每个块中,但查询将其全部计算在一列中。

标签: mysql database


【解决方案1】:

您应该汇总 CASE 表达式:

SELECT
    dev_block, 
    SUM(problem_type = 'Relating to Cultivation') AS RelatingtoCultivation,
    SUM(problem_type = 'Relating to storage')     AS Relatingtostorage,
    SUM(problem_type = 'Relating to transport')   AS Relatingtotransport,
    SUM(problem_type = 'Relating to marketing')   AS Relatingtomarketing,
    SUM(problem_type = 'Others') AS OTHERS,
    SUM(problem_type = '') AS NoProblem
FROM (
    SELECT a.dev_block, b.problem_type
    FROM hd_survey_head a
    INNER JOIN hd_survey_horti_problems b ON a.survey_id = b.survey_id
    WHERE b.problem_head = 'Major Problems being faced for Fruit Crops' AND
          district = 'SHIMLA'
) AS z
GROUP BY dev_block;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多