MYSQL-返回一次选择减去另一次选择的结果
从本质上说,我试图得到的是在进行广告宣传后,在房产网站上增加房产的浏览量。每个视图都相当于视图表中的一行。假设广告活动持续到2014年1月 我可以运行两个独立的查询1)获得1月的计数2)获得2月的计数 查询1-1月份的视图MYSQL-返回一次选择减去另一次选择的结果,mysql,sql,Mysql,Sql,从本质上说,我试图得到的是在进行广告宣传后,在房产网站上增加房产的浏览量。每个视图都相当于视图表中的一行。假设广告活动持续到2014年1月 我可以运行两个独立的查询1)获得1月的计数2)获得2月的计数 查询1-1月份的视图 SELECT COUNT(Views.ViewId) AS 'January Munster Views' FROM Views INNER JOIN Property ON Views.PropertyId=Property.PropertyId WHERE Vie
SELECT COUNT(Views.ViewId) AS 'January Munster Views'
FROM Views
INNER JOIN Property
ON Views.PropertyId=Property.PropertyId
WHERE Views.ViewsDate LIKE '2015-01-%'
AND Property.PropertyPrice BETWEEN "800" AND "1000"
AND (Property.PropertyCounty='Co Waterford' OR Property.PropertyCounty='Co Cork' OR Property.PropertyCounty='Co Clare'
OR Property.PropertyCounty='Co Kerry' OR Property.PropertyCounty='Co Tipperary' OR Property.PropertyCounty='Co Limerick' );
结果=103
查询2-二月视图
SELECT COUNT(Views.ViewId) AS 'February Munster Views'
FROM Views
INNER JOIN Property
ON Views.PropertyId=Property.PropertyId
WHERE Views.ViewsDate LIKE '2015-02-%'
AND Property.PropertyPrice BETWEEN "800" AND "1000"
AND (Property.PropertyCounty='Co Waterford' OR Property.PropertyCounty='Co Cork' OR Property.PropertyCounty='Co Clare'
OR Property.PropertyCounty='Co Kerry' OR Property.PropertyCounty='Co Tipperary' OR Property.PropertyCounty='Co Limerick' );
结果=274
有没有办法只返回171作为列标题“增加”的结果
我当然可以用Java或PHP来做这项工作,但我想知道是否可以用SQL语句
谢谢如果我正确理解了问题,只需将每个查询放在括号中,然后按如下方式减去: 选择(查询1)-(查询2)作为增加
[请参见仅使用条件聚合:
SELECT SUM(CASE WHEN v.ViewsDate >= '2015-01-01' and v.ViewsDate < '2015-02-01' THEN 1 ELSE 0 END) AS Jan,
SUM(CASE WHEN v.ViewsDate >= '2015-02-01' and v.ViewsDate < '2015-03-01' THEN 1 ELSE 0 END) AS Feb
FROM Views v INNER JOIN
Property p
ON v.PropertyId = p.PropertyId
WHERE p.PropertyPrice BETWEEN 800 AND 1000 AND
p.PropertyCounty IN ('Co Waterford', 'Co Cork', 'Co Clare', 'Co Kerry', 'Co Tipperary');
选择SUM(当v.ViewsDate>='2015-01-01'和v.ViewsDate<'2015-02-01'时,则为1,否则为0结束)作为1月,
截至2月31日的总和(当v.ViewsDate>='2015-02-01'和v.ViewsDate<'2015-03-01'时,则为1,否则为0)
从视图v内部连接
属性p
关于v.PropertyId=p.PropertyId
其中p.Property价格介于800和1000之间,并且
p、 位于(“共同沃特福德”、“共同科克”、“共同克莱尔”、“共同克里”、“共同蒂普拉里”)的地产县;
查询中的其他一些提示:
- 使用表格别名。它们更易于键入和阅读
- 在中使用
,而不是使用
。这样更易于编写和读取,也更不容易出错或
- 不要对列别名使用单引号。这可能会导致混淆
- 不要像在日期上使用那样使用
。所有数据库都内置了对日期的支持,通常不需要将它们作为字符串进行比较
最后,您只需减去前两个值即可得到差异。绝对完美。非常感谢。感谢您的帮助。它给出的答案似乎与单独运行两个查询略有不同。我的查询1给出的是1月-103日2月-274日。您的查询给出的是1月-70日184日。编辑-刚刚注意到一个县从我会再试一试的