我有一个表格,上面有数千个拍卖物品的条目。一些拍卖品立即出售,其他拍卖品在随后的拍卖中以较低的价格重新上市。每个拍卖项目条目对于其在数据库中的条目具有唯一的id (因此,当重新输入项目时,它获得新的列表id),但也具有不随重新列表而改变的唯一项目标识符。
此外,还有拍卖物品的类别,以及特定的品牌和类型(例如,“家具”类别有许多列表,制造商“la-z- well”是其中一个品牌,然后“recliner”是一个更具体的类型)。
重新列出的项目将使用新的唯一id和新价格重新输入到数据库中,但唯一的项目标识符保持不变,所有其他列/属性保持不变。我可以通过以下命令找到所有价格发生变化的商品:
SELECT category, unique_item_identifier FROM auction_listings WHERE category='furniture' GROUP BY unique_item_identifier HAVING COUNT(*)>1;
这个查询的问题是它只返回唯一的标识符、类别和计数,但是我不能查看价格变化。此外,如果我试图更具体地了解查询,例如
SELECT category, brand, unique_item_identifier FROM auction_listings WHERE category='furniture' GROUP BY unique_item_identifier HAVING COUNT(*)>1;
这是因为:“SELECT list的表达式#2不在GROUP BY子句中,并且包含在函数上不依赖于GROUP BY子句中的列的非聚合列;这与sql_mode=only_full_group_by不兼容”
我想看看所有有价格变化的洛杉矶男孩,然后看看那些价格变化是什么。我还希望能够运行一个查询,显示所有有价格变化的la-z-boys (不管类型),所以我还希望能够选择类别,品牌,类型,其中brand='la-z-boy‘(然后显示所有有价格变化的la-z-boys,输出包括不同的价格)。
我正在寻找这样的输出:
unique-1 la-z-boy recliner price: $1000 entered on 1/1/2018
unique-1 la-z-boy recliner price: $800 entered on 2/1/2018
unique-2 la-z-boy recliner price: $1,200 entered on 1/1/2018
unique-2 la-z-boy recliner price: $1,050 entered on 2/1/2018
unique-2 la-z-boy recliner price: $950 entered on 3/1/2018
unique-3 la-z-boy couch price: $1,200 entered on 1/1/2018
unique-3 la-z-boy couch price: $1,000 entered on 2/1/2018
提前感谢-我已经在这里阅读了几十个与这个特定请求非常接近的答案,但无法明确地找到这一点,也无法从其他答案中找出如何做到这一点。
发布于 2018-04-10 19:39:32
您还没有提供样本数据,但希望以下内容足以演示原理
+------+--------+----------+-------------+--------+
| id | userID | industry | companyName | salary |
+------+--------+----------+-------------+--------+
| 1 | 2 | 55 | abc company | 55 |
| 2 | 2 | 55 | xyz company | 75 |
| 3 | 2 | 56 | 123 company | 85 |
| 4 | 3 | 12 | cjf company | 25 |
| 5 | 4 | 52 | xxx company | 77 |
| 6 | 4 | 65 | yyy company | 99 |
+------+--------+----------+-------------+--------+
6 rows in set (0.00 sec)
如果在一个子查询中,我们识别出那些有超过一次工资变化的人,我们可以连接回去获取详细信息
select userid,companyname,salary
from uex
where userid in(
select userid
from uex
group by userid having count(distinct salary) > 1
);
+--------+-------------+--------+
| userid | companyname | salary |
+--------+-------------+--------+
| 2 | abc company | 55 |
| 2 | xyz company | 75 |
| 2 | 123 company | 85 |
| 4 | xxx company | 77 |
| 4 | yyy company | 99 |
+--------+-------------+--------+
5 rows in set (0.02 sec)
如果要选择特定用户,请在子查询中包括where子句
select userid,companyname,salary
from uex
where userid in(
select userid
from uex
where userid = 2
group by userid having count(distinct salary) > 1
);
https://stackoverflow.com/questions/49751575
复制相似问题