[英]select count/sum and true/false bit-flag at the same time
在我的MySQL数据库中,我得到了三个表。 一个是具有ID和更多列的项目列表。 第二个是具有名字的用户列表,依此类推。 如果用户已对商品进行评分和/或购买,则记录第三项。 待定和已购买列的数据类型将为位标记(1/0)。
因此,现在我只想返回一个 SQL查询,一次对项目进行评估的频率以及是否由特定用户进行了评估。
输入参数为:
结果应为:
这称为枢轴 。
SELECT item, SUM(rated) AS no_rated, SUM(bought) AS no_bought,
MAX(user = 1 AND rated = 1) AS rated_by_1,
MAX(user = 2 AND rated = 1) AS rated_by_2,
MAX(user = 1 AND bought = 1) AS bought_by_1,
MAX(user = 2 AND bought = 2) AS bought_by_2
FROM YourTable
GROUP BY item
有关在MySQL中进行透视的更多信息,请参见MySQL透视表 。 如果用户数量是动态的,那么您就不能像我一样对它们进行硬编码,则需要编写动态SQL。 在该问题的答案中有指向某些网站的链接,这些链接显示了如何执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.