【发布时间】:2014-01-20 20:22:42
【问题描述】:
表 1:
| user | bid |
---------------------------
| may | 0.06 |
| dee | 0.05 |
| jay | 0.04 |
| mac | 0.03 |
| dee | 0.02 |
| mac | 0.01 |
表 2:
| user | ratio|
---------------------------
| dee | .25 |
| jay | .45 |
| mac | .85 |
| fil | .75 |
| may | .95 |
我想根据表 2 中的配给计算表 1 中有多少不同的用户落在特定范围 (0-.99) 内。
输出:
| Ratio_Group | Count|
---------------------------
| 0.00-0.25 | 1 |
| 0.25-0.50 | 1 |
| 0.50-0.75 | 0 |
| 0.75-0.99 | 2 |
每个比率分组是否有 1 个查询,我可以根据他们在表 2 中的分组来计算表 1 中的不同用户?我使用了 IF 和 COUNT 语句的组合,但表 1 中的每一行都被评估和计数,而不仅仅是 DISTINCT 用户,因此我得到了一个夸大的结果。
例如:
COUNT((IF table1.user <0.25,1,0))
COUNT((IF table1.user BETWEEN 0.25 AND 0.50,1,0))
etc...
4 个查询中的每一个都将在存储过程中使用,因此每个比率分组需要 1 个查询,因此我可以将每个组的结果分配给存储过程中的变量。
【问题讨论】:
-
您有
user_id还是user主键? -
“用户”是表 2 中的主键。表 1 中的主键是出价。
-
更正:在表 1 中,“出价”和唯一 ID 都是主键。表 1 将有多个与上述类似的示例。我没有为示例输入唯一 ID。