计算一个 table 中不同行的数量和另一个 table 中一列的最大值的单个查询
A single query to count the number of distinct rows in one table and the highest value of a column from another table
我有两个 SQL table。 Table1如下:
SALEREF
1 | 40303020
2 | 40303021
3 | 40303021
4 | 40303021
5 | 41210028
6 | 4120302701
7 | 41210030
8 | 4112700803
9 | 4112700803
10 | 41215030
11 | 41215026
12 | 41215026
13 | 41215026
14 | 41215026
15 | 41215026
16 | 41215026
17 | 41215026
18 | 41215027
19 | 41215027
20 | 41215027
Table2("LEDGER")如下:
SALESREF SALEDATE
0 | 4081200201 | 20140804
1 | 40303020 | 20141015
2 | 40303021 | 20141017
3 | 40303021 | 20141017
4 | 40303021 | 20141017
5 | 41210028 | 20121214
6 | 4120302701 | 20130926
7 | 41210030 | 20130926
8 | 4112700803 | 20131107
9 | 4112700803 | 20131107
10 | 41215030 | 20120720
我正在寻找的是输出以下内容的单行:
TotalDistinctSalesRefsInTable1 HighestSaleDateValueInTable2 (that has a matching value in table 1)
9 20141017
table 1 中不同 SALESREF 的总数和来自 table 2 的最新 SALESDATE 值。
我试过在查询中进行选择,但很快发现我的知识有限,尽管我知道我可以通过以下方式获得最新的整体销售日期:
SELECT MAX(LEDGER.SALEDATE) AS LAST_DATE FROM LEDGER
我只需要帮助将整个事情拼凑起来。
您可以使用 left join
、count
和 max
来获得您想要的结果
select count(distinct t1.salesref) as TotalDistinctSalesRefsInTable1,
ifnull(max(l.saledate),0) as HighestSaleDateValueInTable
from table1 t1
left join ledger l
on t1.salesref = l.salesref
我有两个 SQL table。 Table1如下:
SALEREF
1 | 40303020
2 | 40303021
3 | 40303021
4 | 40303021
5 | 41210028
6 | 4120302701
7 | 41210030
8 | 4112700803
9 | 4112700803
10 | 41215030
11 | 41215026
12 | 41215026
13 | 41215026
14 | 41215026
15 | 41215026
16 | 41215026
17 | 41215026
18 | 41215027
19 | 41215027
20 | 41215027
Table2("LEDGER")如下:
SALESREF SALEDATE
0 | 4081200201 | 20140804
1 | 40303020 | 20141015
2 | 40303021 | 20141017
3 | 40303021 | 20141017
4 | 40303021 | 20141017
5 | 41210028 | 20121214
6 | 4120302701 | 20130926
7 | 41210030 | 20130926
8 | 4112700803 | 20131107
9 | 4112700803 | 20131107
10 | 41215030 | 20120720
我正在寻找的是输出以下内容的单行:
TotalDistinctSalesRefsInTable1 HighestSaleDateValueInTable2 (that has a matching value in table 1)
9 20141017
table 1 中不同 SALESREF 的总数和来自 table 2 的最新 SALESDATE 值。
我试过在查询中进行选择,但很快发现我的知识有限,尽管我知道我可以通过以下方式获得最新的整体销售日期:
SELECT MAX(LEDGER.SALEDATE) AS LAST_DATE FROM LEDGER
我只需要帮助将整个事情拼凑起来。
您可以使用 left join
、count
和 max
来获得您想要的结果
select count(distinct t1.salesref) as TotalDistinctSalesRefsInTable1,
ifnull(max(l.saledate),0) as HighestSaleDateValueInTable
from table1 t1
left join ledger l
on t1.salesref = l.salesref