繁体   English   中英

同时选择计数/和和真/假位标志

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM