簡體   English   中英

mysql desc對我不起作用

[英]mysql desc doesnt work for me

它應該列出一個列表,並在頂部的百分比最高..但它不是https://gyazo.com/ecde864ef09115b8b119eba8a39ecd68這里我運行它的圖片

這里的代碼。 怎么了?

$sql = "SELECT band, concat(round(sum(punten) *100 /
(SELECT sum(punten) FROM bands)) , \"%\") AS percent
FROM bands
WHERE punten>0
GROUP BY band 
ORDER BY percent DESC;";

百分比列是一個字符串,因此它們按字典順序排序(例如,8被視為大於26,因為“8”在“2”之后)。 相反,您可以在連接之前對數字部分進行排序。 這可以用當前查詢完成,但它會更優雅更總punten到一個子查詢:

SELECT     band, CONCAT(ROUND(band_punten) * 100 / total_punten), '%') AS percent
FROM       (SELECT   band, SUM(punten) AS band_punten
            FROM     bands
            WHERE    punten > 0
            GROUP BY band) a
CROSS JOIN (SELECT SUM(punten) AS total_punten FROM bands) b
ORDER BY   band_punten DESC

使用基礎值。 將數字轉換為字符串然后返回到數字是很尷尬的。 所以:

SELECT band,
       concat(round(sum(punten) * 100 / sump) , \"%\") AS percent
FROM bands CROSS JOIN
     (SELECT sum(punten) as sump FROM bands) x
WHERE punten > 0
GROUP BY band 
ORDER BY sum(punten) DESC;

我還將子查詢移動到FROM子句。 這通常更有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM