这个问题的 SQL 查询是什么?

问题描述 投票:0回答:2

我有一个数据库表交易,它存储用户进行的所有与购买、出售和下订单相关的交易。

表http://img691.imageshack.us/img691/1948/stackoverflow.jpg

我想编写一个 SQL 查询,其结果如下:
1. 每个人进行的所有交易的计数。
2.每种订单类型的交易都很重要
3.结果应该从最大总数到最小排序
4. 结果应该只获取前 10 个人的信息(使用“limit 0,10”)。

我想获取已经组织好的数据,而不是获取原始数据并在 PHP 中进行操作

所以我想为这个问题编写一个优化查询,因为这个表包含数千行 请指导我

谢谢...

mysql sql
2个回答
2
投票

尝试类似:

SELECT p_id, COUNT(1) AS Total, SUM(CASE WHEN order_type = 'purchased' THEN 1 ELSE 0 END) AS PurchaseCount, SUM(CASE WHEN order_type = 'placed order' THEN 1 ELSE 0 END) AS PlacedOrderCount, SUM(CASE WHEN order_type = 'sold' THEN 1 ELSE 0 END) AS SoldCount
FROM transaction
GROUP BY p_id
ORDER BY Total DESC
LIMIT 0, 10

针对您的后续评论,我相信这会得到您想要的 (根据您的需要将计数限制设置为截止)

SELECT p_id, item_name, COUNT(item_name) as ItemCount
FROM transaction
GROUP BY p_id, item_name
HAVING COUNT(item_name) > 100

0
投票

Vikas为了回应您的后续评论,我相信这会得到您想要的(其中计数限制设置为根据您的需求而截止)

© www.soinside.com 2019 - 2024. All rights reserved.