今天去面试遇到一个数据库试题,首先说一下表结构如下:
表结构:mytest
表数据:mytest
要查询的结果如下:
在本题目中,需要用到sum聚合函数和if函数
sql如下:
SELECT `date`,SUM(IF(ifwin="胜",1,0)) AS 胜,SUM(IF(ifwin="负",1,0)) AS 负 FROM mytest GROUP BY `date`;
特别注意:sum函数试求和的,求出所有1的和,所以这里用sum 而不是count函数。
当然,本查询还可以使用其他方法:
SELECT mt.`date`,(SELECT COUNT(*) FROM mytest mt1 WHERE mt1.ifwin="胜" AND mt1.date=mt.date ) AS 男, (SELECT COUNT(*) FROM mytest mt1 WHERE mt1.ifwin="胜" AND mt1.date=mt.date ) AS 女 FROM mytest mt GROUP BY mt.date;
本方法也可以查询出数据。