我有一张这样的表:
id name salary year
1 A 100 2013
2 B 88 2012
3 C 95 2010
4 A 45 2012
5 B 87 2011
6 C 98 2011
7 A 54 2009
我想选择所有记录,但只显示过去两年(2013年,2012年)的工资总额?但是以下查询将给出所有年份的总和。
select name, sum(salary) as total from table group by name;
输出应为:
name total
A 145
B 88
C 0
注意:我知道使用where子句可以获得,但我希望显示所有名称。
答案 0 :(得分:1)
我想知道你为什么不想使用WHERE
条款。无论如何,MySQL支持内联IF
语句。
SELECT Name,
SUM(IF(year IN (2013,2012), salary, 0)) total
FROM tableName
GROUP BY Name
输出
╔══════╦═══════╗
║ NAME ║ TOTAL ║
╠══════╬═══════╣
║ A ║ 145 ║
║ B ║ 88 ║
║ C ║ 0 ║
╚══════╩═══════╝
如果您想要更友好的RDBMS,可以使用CASE
SELECT Name,
SUM(CASE WHEN year IN (2013,2012) THEN salary ELSE 0 END) total
FROM tableName
GROUP BY Name