[英]how to sort 2 different column in sql
你们可以告诉我如何在sql中对用户定义的列和固定的列名称进行排序。 我需要显示最高的交易记录和折扣编号,相反,我只能获得最高的交易记录,但是输出编号不在分组中。
对不起,我的英语不好
这是问题
outlet id | revenue code | total transaction | total amount
6837 | 014 | 326 | 39158.94
6821 | 408 | 291 | 48786.50
6814 | 014 | 285 | 74159.76
6837 | 452 | 282 | 8846.80
这是我的sql
SELECT
outletid,
revcode,
count(receiptnumbe) as Transactions,
sum(amount) as total
FROM
user_payment
WHERE
date = (SELECT MAX(date) FROM user_payment GROUP BY date desc LIMIT 0, 1)
GROUP BY
outletid, revcode
ORDER BY Transactions desc
我需要像这样。 按网点编号和最高交易次数排序。
outlet id | revenue code | total transaction | total amount
6837 | 014 | 326 | 39158.94
6837 | 452 | 282 | 8846.80
6821 | 408 | 291 | 48786.50
6814 | 014 | 285 | 74159.76
这是你想要的吗?
ORDER BY OutletId, Transactions desc
编辑:
如果我理解正确,则希望按交易总数最多的网点进行排序。 然后通过该组内的交易。 为此,您需要在outlet
级别再次进行汇总,然后将结果重新加入:
select outor.*
from (SELECT up.outletid, up.revcode, count(up.receiptnumbe) as Transactions,
sum(up.amount) as total
FROM user_payment up
WHERE date = (SELECT MAX(date) FROM user_payment)
GROUP BY outletid, revcode
) outor join
(SELECT up.outletid, count(up.receiptnumbe) as Transactions,
sum(up.amount) as total
FROM user_payment up
WHERE date = (SELECT MAX(date) FROM user_payment)
GROUP BY outletid
) o
on outor.outletid = o.outletid
order by o.Transactions desc, outor.outletid, outor.Transactions desc;
1)首先要做的是确保您要对字段进行排序。 您要它们按数字还是字母排序? 请参阅对词法和数字计数排序应为数字,但应检查outletid。 如果可以访问表,则可以将字段更改为数字类型以使其按数字排序,或将字符串更改为按字母顺序排序。 您可能必须使用强制转换或转换。 请参阅Oracle Cast文档。
2)如果您希望整个表按出口ID和交易量排序,则可以考虑删除group by子句。
3)即使这样做,我还要看的第三件事是将具有保留字的列名重命名为保留字的表。 我注意到交易以蓝色突出显示。
选中这些内容后,Melon的评论应该起作用。
好问题。 请随时发表评论,以便我跟进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.