我目前正在开发一个程序,它将根据潜在客户数据生成报告。我的问题是我正在运行3个查询,我只想运行一个查询。例如,我想收集过去一天生成的潜在客户的数据
submission_date > (NOW() - INTERVAL 1 DAY)
我想知道有多少总线数,以及在那个时间段内有多少销售线索。 (sold = 1 / sold = 0)。问题在于此查询目前正在进行2次查询,其中一次查询WHERE
已售出= 1
,另一次查询WHERE
已售出= 0
。这一切都很好,但是当我想生成过去一天,一周,一个月,一年和所有时间的数据时,我将不得不运行10个查询来获取这些数据。我觉得有一个更有效的方法来做到这一点。我知道我可以为此创建一个mySQL函数,但我不知道这可以解决这个问题。
谢谢!
答案 0 :(得分:2)
为什么不销售GROUP BY,以便获得已售出和未售出的总数
答案 1 :(得分:1)
一种方法是利用聚合函数(通常SUM
和COUNT
在这种情况下帮助最多)以及MySQL的IF()
函数。
例如,您可以使用以下查询:
SELECT
SUM(IF(sold = 1, sold, 0)) AS TotalSold,
SUM(IF(sold = 0, sold, 0)) AS TotalUnsold,
SUM(IF(submission_date > (NOW() - INTERVAL 1 WEEK)
AND sold = 1, sold, 0) AS TotalSoldThisWeek
FROM ...
WHERE ...
条件(例如sold = 1
)可能会因使用AND
和OR
而变得复杂。
免责声明:代码未经过测试,这仅作为一个示例提供,可以进行微小的修改。