我正在做一些数据分析,想找到一种简单的方法来按功能检查组中每个“组”的所有成员。
比如,一个订单可能涉及 3 个代理。我想快速检查一下出于各种原因按此顺序“分组”的三个特工。
通常,我会为此使用 group_concat(查看所有分组字符串的简单方法)。然而,目前在 SQL 服务器中使用“group by”复制它似乎很困难且笨拙。
现在,粗糙和肮脏,我会 max(username) 和 min(username) 快速找到 2(90% 的订单可能有 2 或更少的人。有没有办法做 mid(username) 或 2nd- highest(username), or percentile(50th, username)? 这将是找到这些相关数据的一种很好、快速的方法。出于某种原因,我之前看到的描述 SQL Server 上的 group_concat 的答案对我来说听起来并不简单。
示例数据例如:
employee purchase_id
bill 1
bob 1
chrissy 1
mike 2
bill 2
bob 3
目前我有这个:
purchase_id, employee_count, complicated metric
1 3 blahblah
2 2 dsflsajf
3 1 98%
我想看一眼:
purchase_id, employees, complicated metric
1 (bill,bob,chrissy) blahblah
然而,group_concat 似乎很难与 group by 语句一起使用 - 或者用 SQL Server 模拟 group_concat。所以相反,这个怎么样。
选择最大(员工),最小(员工)
purchase_id, max(employee), min(employee)
1 bill chrissy
在示例中,您看到 bob 被省略,因为 max/min 只会找到两个端点。如果有某种函数可以提取字符串的第二高值或第 50 个百分位值,那将会很有帮助。
这样的事情会将结果分成多列,但您需要提前知道每个 purchase_id 的最大员工人数: