我有两个表(sales_today和last_year_same_day_sales)。从sales_today表中,我想将t_net_sales和t_gross_margin列相加。 从last_year_same_day_sales,我想将ly_net_sales和ly_gross_margin列相加并在一个表中显示结果,如下所示
sales_today
store_number | t_net_sales | t_gross_margin
1 | 100.00 | 20.00
2 | 150.00 | 35.00
last_year_same_day_sales
store_number | ly_net_sales| ly_gross_margin
1 | 175.00 | 50.00
2 | 125.00 | 25.00
3 | 75.00 | 10.00
results
today_net_sales | last_year_net_sales | today_gross_margin | last_year_gross_margin
250.00 | 375.00 | 55.00 | 85.00
这是我的问题:
SELECT
(SELECT SUM(t_net_sales) FROM sales_today) AS today_net_sales,
(SELECT SUM(ly_net_sales) FROM last_year_same_day_sales) AS last_year_net_sales,
(SELECT SUM(t_gross_margin) FROM sales_today) AS today_gross_margin,
(SELECT SUM(ly_gross_margin) FROM last_year_same_day_sales) AS last_year_gross_margin
我在查询中得到了正确的结果。还有更好的方法吗?
答案 0 :(得分:0)
您可以将子查询移动到from
子句,只使用两个:
SELECT st.today_net_sales, st.today_gross_margin,
ly.last_year_net_sales, ly.last_year_gross_margin
FROM (SELECT SUM(t_net_sales) as today_net_sales,
SUM(t_gross_margin) as today_gross_margin
FROM sales_today
) st CROSS JOIN
(SELECT SUM(ly_net_sales) as last_year_net_sales,
SUM(ly_gross_margin) as last_year_gross_margin
FROM last_year_same_day_sales
) ly;
这应该比您的版本具有更好的性能,因为这两个表只扫描一次。