我有这个 SQL 查询
SELECT
SERVERPROPERTY('MachineName') AS FoodServer,
SUM(Extended * Multiplier) AS GrossSale,
(SELECT
COUNT(*)
FROM FinishedTransaction)
AS counts
FROM finishedsales fs
LEFT JOIN FinishedTransaction ft
ON fs.TransactionNo = ft.TransactionNo
现在,我想获取 GrossSale
列和计数列的商并将其显示到第三列。我在下面尝试了这个查询,但它不起作用。
SELECT
SERVERPROPERTY('MachineName') AS FoodServer,
SUM(Extended * Multiplier) AS GrossSale,
(SELECT
COUNT(*)
FROM FinishedTransaction)
AS counts,
(GrossSale / counts) AS result
FROM finishedsales fs
LEFT JOIN FinishedTransaction ft
ON fs.TransactionNo = ft.TransactionNo
这个替代解决方案正在工作..
SELECT
SERVERPROPERTY('MachineName') AS FoodServer,
SUM(Extended * Multiplier) AS GrossSale,
(SELECT
COUNT(*)
FROM FinishedTransaction)
AS counts,
SUM(Extended * Multiplier) / (SELECT
COUNT(*)
FROM FinishedTransaction)
AS result
FROM finishedsales fs
LEFT JOIN FinishedTransaction ft
ON fs.TransactionNo = ft.TransactionNo
但我不想要那个解决方案,因为它有点冗长,而且性能不佳。我想知道该问题的最佳解决方案
最佳答案
我没有发现您的解决方案有任何问题,您可能更喜欢这个,但我怀疑您会获得更好的性能。
Select Foodserver, GrossSale, Counts, (GrossSale / counts) as result
FROM
(
SELECT SERVERPROPERTY ('MachineName') as FoodServer,
SUM(Extended * Multiplier) as GrossSale,
(SELECT COUNT(*) FROM FinishedTransaction) as counts
FROM finishedsales fs LEFT JOIN FinishedTransaction ft
ON fs.TransactionNo = ft.TransactionNo
) as salesData
注意。你也应该在这里添加除以零检查..我认为where GrossSale <>0 AND Counts <>0
应该这样做。
关于mysql - 如何使用两列得到第三列的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45433431/