我真的很难创建一个简单的网格,我可以提供给非技术团队成员,这样他们就可以根据任何两个人口统计特征轻松查找SQL客户数据库中的人数。
例如,我们经常会遇到类似以下问题:数据库中有多少人是36-45岁的男性和#34;或者"我们的数据库中有多少18-25岁的人可以通过电子邮件发送#34;使用查找网格,他们将能够自己回答这些问题。
实际数据有很多变量,因此实际网格可能很大,但源数据表的简化示例每个客户有1行(约3米行),并带有以下列:
party_id -- Customer ID #
, gender -- 'Male'/'Female'/'Unknown gender'
, age -- '18-25'/'26-35'/'36-45'/'46-55'/'56-65'/'66-80'/'Unknown age'
, emailability -- 'Emailable'/'Not Emailable'
结果网格将具有相同的行和列,每个单元格中的客户数量(即满足行和列标准的人数)。在此示例中,行和列将为:
Male
Female
Unknown gender
18-25
26-35
36-45
46-55
56-65
66-80
Unknown age
Emailable
Not emailable
要查找满足任何两个条件的人数,您只需要找到网格上的交集(在上面的第一个问题中,这是行的交集:"男性"和专栏:" 18-25"或行:" 18-25"和专栏:"男")。
这听起来不应该是一个困难的问题,但我完全难倒了。我认为这将由Pivots解决,但我无法找到一种方法来交叉制表超过2个变量。 SQL可能不是这项工作的正确工具,但目前我没有其他工具可用,所以如果可能的话我想找到一个SQL解决方案,但如果你知道更好的选择,请告诉我
我很惊讶没有在这里找到现有的解决方案,但我可能没有使用正确的搜索词,所以如果已经得到答案就道歉。
谢谢!
- EDIT-- 根据要求提供了一些示例数据:
party_id |gender |age |Emailability |
---------|-------|--------|--------------|
1 |Male |18-25 |Not Emailable |
2 |Female |Unknown |Emailable |
3 |Unknown|36-45 |Emailable |
4 |Male |36-45 |Not Emailable |
5 |Male |56-65 |Emailable |
6 |Female |26-35 |Emailable |
7 |Male |18-25 |Emailable |
8 |Unknown|18-25 |Not Emailable |
9 |Male |66-80 |Emailable |
10 |Female |26-35 |Emailable |
根据这个示例数据,填充的网格的前几行看起来像这样(由于页面宽度,我不得不删除可邮寄性列,但它们也会包括在内):
Male Female Unknown Gender 18-25 26-35 36-45 46-55 56-65 66-80
Male 5 0 0 2 0 1 0 1 1
Female 0 3 0 0 2 0 0 0 0
Unknown gender 0 0 2 1 0 1 0 0 0
18-25
26-35
36-45
46-55
56-65
66-80
Unknown age
Emailable
Not emailable
为了澄清我认为它引起了一些混乱,我并没有尝试为其他数据库用户创建一个视图 - 我希望创建一个输出,我可以导出为非技术人员excel用作讲义/备忘单。可能是这个网格不能单独使用SQL来按计划设置,但是由于数据集的大小和有限数量的工具,我希望它可以在SQL中完成。再次感谢您的任何建议。