当前位置: 首页 > 知识库问答 >
问题:

使用多个计数和SUM()进行排序

薛墨一
2023-03-14

我正在努力得到正确的语法下面。我尝试过不同的工会,但都没有成功。

我需要将这三个总数相加为“totcount”。数据表非常大,希望找到一种比第4个子查询更好的方法来获取totcount。

    SELECT 
    location.*,data.status,
            (SELECT COUNT(data.id) FROM data WHERE data.locid=location.locid AND data.status='NEW') AS newcount,
            (SELECT COUNT(data.id) FROM data WHERE data.locid=location.locid AND data.status='IN-PROGRESS') AS ipcount,
            (SELECT COUNT(data.id) FROM data WHERE data.locid=location.locid AND data.status='COMPLATED') AS compcount
    FROM TP_locations
    LEFT JOIN data ON data.locid=location.locid AND data.status IN('NEW','IN-PROGRESS','COMPLETED')
    WHERE data.status IS NOT NULL
    GROUP BY location.locid
    ORDER BY totcount

共有1个答案

訾凯歌
2023-03-14

您的查询(如果我理解其意图)可以简化为:

SELECT 
    location.*,
    data.status, --this is meaningless, it will give you a random one of the 3 possible values
    COUNT(IF(data.status='NEW',1,null) AS newcount,
    COUNT(IF(data.status='IN-PROGRESS',1,null) AS ipcount,
    COUNT(IF(data.status='COMPLATED',1,null) AS compcount,
    COUNT(1) AS totcount
FROM TP_locations
JOIN data ON data.locid=location.locid AND data.status IN('NEW','IN-PROGRESS','COMPLETED')
GROUP BY location.locid
ORDER BY totcount

则可以按任何一列进行排序。

 类似资料:
  • Leetcode#167几乎与#1相同,但为什么我不能只添加一个if条件? 函数twoSum应该返回两个数字的索引,使它们相加为目标,其中index1必须小于index2。 注: 返回的答案(index1和index2)不是从零开始的。您可以假设每个输入都有一个解决方案,并且不能两次使用同一个元素。

  • 我想知道这怎么会被COUNT然后ASC订购。 输出: 所需输出:

  • 问题内容: 我有一个简单的表,其中包含一些虚拟数据设置: 我可以通过执行以下sql(MSSQL 2008)语句来选择运行总计: 这将给我如下结果: 现在可以只为每个用户检索最新的行吗?因此结果将是: 我要这样做正确吗?任何建议或遵循的新路径都将是很棒的! 问题答案: 试试这个: SQL小提琴演示

  • 问题内容: 我有可能需要按1-n键排序的大文件。其中一些键可能是数字键,有些则可能不是数字键。这是一个固定宽度的柱状文件,因此没有定界符。 有没有一种很好的方法可以用Unix排序呢?使用一个键,就像使用“ -n”一样简单。我已经阅读了手册页并简短地搜索了Google,但是没有找到一个很好的例子。我将如何实现这一目标? 注意:由于文件大小可能,我排除了Perl。这将是不得已的办法。 问题答案: 使用

  • 问题内容: 我有一个成员数组/切片: 我的问题是如何按,然后按。 问题答案: 使用sort.Slice(从Go 1.8开始可用)或sort.Sort函数对值的切片进行排序。 通过这两个功能,应用程序提供了一个功能,用于测试一个切片元素是否小于另一个切片元素。要按姓氏和名字排序,请比较姓氏和名字: less函数是使用带有sort.Slice的匿名函数指定的: less函数通过带有sort.Sort函

  • 本文向大家介绍PHP使用array_multisort对多个数组或多维数组进行排序,包括了PHP使用array_multisort对多个数组或多维数组进行排序的使用技巧和注意事项,需要的朋友参考一下 PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以