You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从数据集中筛选每年每月最高盈利客户的计费与非计费工时?

问题描述

我需要从数据集中确定最高盈利的客户。目前得到的结果存在问题:计费列显示工时,但非计费列为空;查询返回所有客户而非每月最佳客户等。

以下是我当前编写的查询,该查询已实现将计费与非计费工时显示在同一行:

Select
    date_format(date, '%Y-%m') AS "yearMonth", 
    ClientNumber AS "Client Number",
    Sum(Case When BillType = 'Billable' Then Hours End) As "Billable Hours",
    Sum(Case When BillType = 'NonBillable' Then Hours End) As "Non-Billable Hours",
    Sum(Hours) As "Total Hours",
From Towson
WHERE ClientID
Group By
    yearMonth
Order By
    yearMonth;

查询结果如下:

yearMonthClient IDBillable HoursNon-Billable HoursTotal Hours
2019-01367028846.9325539.8854386.81
2019-02367031763.5519631.3651394.91
2019-03398335347.7920010.6455358.43
2019-04137330674.6322797.9253472.55
2019-05367025599.7926535.0052134.79
2019-06367023992.3325159.5049151.83
2019-07324425710.5228995.5554706.07
2019-08367026738.4523201.9349940.38
2019-09367028192.1621243.5749435.73
2019-10367028682.2724676.7253358.99
2019-11169118651.7227537.3646189.08
2019-12382419286.4929229.7748516.26
2020-01217428427.9627706.0056133.96
2020-02367033946.2320179.1954125.42
2020-03367035047.9922220.2557268.24
2020-04272229763.4123876.5953640.00
2020-05117425515.8324374.2349890.06
2020-06272230021.4425017.4555038.89
2020-07143927714.5328563.1256277.65
2020-08272927126.3822998.7850125.16
2020-09196129645.6825191.3754837.05
2020-10169127744.3626797.1654541.52
2020-11216922059.8729683.9551743.82
2020-12232223738.3533736.2557474.60
2021-01265029637.7025209.8154847.51
2021-02169534480.7320855.4455336.17
2021-03367041603.9823543.8365147.81
2021-04367035361.1324019.4859380.61
2021-05367028771.3325878.6154649.94
2021-06187132794.8227563.9760358.79
2021-07367030380.5230440.3460820.86
2021-08272932588.2527409.7059997.95
2021-09272933993.6127454.8861448.49
2021-10272931623.9827394.1259018.10
2021-11272927583.8532724.2460308.09
2021-12272925785.8835991.0561776.93

该查询的年月维度显示正确(共36个月),但它汇总了每月所有客户的数据,并未筛选出每月最佳客户,这是我遇到的主要问题(此前的问题是无法将计费与非计费工时放在同一行)。


更新

在FanoFN的帮助下,我对查询进行了调整,解决了同一客户每月都被选为第一行的问题,确保每月TotalAmount最高的客户排在第一行:

WITH cte AS 
(SELECT
    DATE_FORMAT(DATE, '%Y-%m') AS "yearMonth",
    ClientId AS "Client ID",
    COUNT(DISTINCT EmployeeId) AS "Employees on account",
    SUM(CASE WHEN BillType = 'Billable' THEN Hours END) AS "Billable Hours",
    SUM(CASE WHEN BillType = 'NonBillable' THEN Hours END) AS "Non-Billable Hours",
    SUM(Hours) AS "Total Hours",
    SUM(TotalAmount) AS "Total Amount",
    ROW_NUMBER() OVER (PARTITION BY DATE_FORMAT(DATE, '%Y-%m') ORDER BY SUM(TotalAmount) DESC) AS RowNum
FROM Towson
GROUP BY
    yearMonth, ClientId
ORDER BY
     yearMonth, TotalAmount)
    
SELECT *
FROM cte 
WHERE RowNum=1;

查询结果如下(仅展示前三个月):

yearMonthClient IDEmployees on accountBillable HoursNon-Billable HoursTotal HoursTotal AmountRowNum
2019-011624122241.00null2241.00701093.41001
2019-021624111627.25null1627.25532556.72001
2019-033913111417.50null1417.50415419.53001

非计费工时显示为null是因为这些客户没有非计费工时(已在数据集中确认)。


内容的提问来源于stack exchange,提问作者SGT Mc Cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 21:37:04