【发布时间】:2021-07-16 15:18:41
【问题描述】:
我有这 3 张桌子:
表1
| counter_ID | house_ID |
|---|---|
| 123456 | 567890 |
| 123457 | 567810 |
| 123463 | 567811 |
| 123478 | 567812 |
表2
| counter_ID | owner_ID | receipt_ID |
|---|---|---|
| 123456 | 0901987 | 678954 |
| 123457 | 0901987 | 423567 |
| 123463 | 0901987 | 543211 |
| 123478 | 0901987 | 345332 |
表3
| amount | owner_ID | receipt_ID | Date |
|---|---|---|---|
| 575 | 0901987 | 678954 | 2020-02-20 |
| 300 | 0901987 | 678954 | 2020-04-21 |
| 450 | 0901987 | 678954 | 2020-05-22 |
| 125 | 0901987 | 678954 | 2020-06-21 |
| 180 | 0901987 | 423567 | 2020-02-20 |
| 350 | 0901987 | 423567 | 2020-03-21 |
| 1200 | 0901987 | 543211 | 2020-02-20 |
| 600 | 0901987 | 543211 | 2020-03-20 |
| 700 | 0901987 | 543211 | 2020-04-20 |
| 380 | 0901987 | 345332 | 2020-02-20 |
| 475 | 0901987 | 345332 | 2020-04-20 |
| 950 | 0901987 | 345332 | 2020-07-20 |
| 110 | 0901987 | 345332 | 2020-08-20 |
我要创建的输出:
| owner_ID | counter_ID | receipt_ID | house_ID | avg_Amount |
|---|---|---|---|---|
| 0901987 | 123456 | 678954 | 567890 | 362 |
| 0901987 | 123457 | 423567 | 567810 | 265 |
| 0901987 | 123463 | 543211 | 567811 | 833 |
| 0901987 | 123478 | 345332 | 567812 | 478 |
如何从 Table1、Table2、Table3 创建这个输出?
我想在结果中按照以下公式计算,列avg_Amount:
最近 3 个月的平均发票金额,但如果相同 owner_ID 和receipt_ID 的发票天数小于 3(表 3 中的 count(records) 天数,则取该可用天数的平均值。
【问题讨论】:
-
你有没有尝试过..?他们是什么?为什么他们不工作?你说
receipt_ID小于3,但receipt_ID的值都不是< 3。 -
在table3中,有count(receipt_ID)
-
take the average of that available days.是什么意思,如果只是平均值,和超过 3 行有什么不同 -
@Charlieface 需要最近 3 个月的平均值。也就是说,如果有 4 个月的记录,则要求前 3 个月的平均值。但如果注册时间不足3个月,则取算术平均值。
标签: sql sql-server join average