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