【发布时间】:2022-07-28 01:04:44
【问题描述】:
如果我的 MySQL 表看起来像这样:
如何编写 mysql 查询以获得如下输出:
userid total_entries products_sold
------------------------------------------------------------------
204 1011 1500
195 785 350
我们的想法是,我们希望获得每个用户的总条目数和销售的产品总和。我不确定这是否称为数据透视表,但有人建议这样做?帮我写mysql查询,如果列中也有日期,我们要获取今天的条目。
【问题讨论】:
-
“Pivot”是正确的数据库概念。用你的桌子来完成它看起来像:
SELECT userid, COUNT(*) as total_entries, SUM(CASE WHEN name = 'products_sold' THEN (value * 1) END as products_sold FROM yourtable GROUP BY userid; -
感谢 JNevill 的回复,但就我而言,userid 不是一列。我无法在此字段上分组。
-
明白了。假设第一列 (
sid?) 与userid的比例为 1:1,则使用相同的CASE逻辑可能是有意义的。SELECT SUM(CASE WHEN name = 'userid' THEN (value*1) END as userid, ...这是 EAV 设计的缺点之一;您的 SQL 往往会变得丑陋。 -
你使用的是什么版本的 MySQL?
标签: mysql sql pivot-table entity-attribute-value