مثال مرتبسازی با استفاده از یک عبارت CASE
یک ترفند ساده برای حفظ ترتیبی که میخواهید میلهها در یک نمودار ظاهر شوند.
مرتبسازی میلهها در یک نمودار
یک ترفند ساده برای حفظ ترتیبی که میخواهید میلهها در یک نمودار ظاهر شوند.
مشکل اینجا: یک پرسوجو مینویسید، و میخواهید نتایج را روی یک نمودار میله یا funnel مرتب نگه دارید، اما مقادیری که پرسوجو برمیگرداند ترتیب را به هم میزند.
به عنوان مثال، بگویید میخواهید چیزی که خیلی خوب مرتب نمیشود را مرتب کنید، مثل اگر چهار مرحله مختلف با برچسب "First"، "Second"، "Third"، "Fourth" داشتید و میخواستید آنها را به ترتیب معنایی مرتب کنید، بدون توجه به هر مقدار متناظری که دارند. متابیس (یا هر ابزاری که استفاده میکنید) آن مقادیر را به عنوان رشته مرتب میکند (یعنی، به ترتیب حروف الفبا مرتب میشوند، نه معنایی، که خیلی منطقی نیست: "First"، "Fourth"، "Second"، "Third").
در اینجا یک ترفند برای rearranging نمودار برای مشخص کردن ترتیبی که میخواهید.
- پرسوجوی خود را هر طور که میخواهید بنویسید (طبیعتاً بهترین روشها را دنبال کنید).
- با فرض اینکه میخواهید بر اساس مقادیر در یک ستون به نام
stepمرتب کنید، در انتهای پرسوجو، از یک عبارتCASEبرای تعریف ترتیب مقادیر در ستونstepاستفاده کنید.
ORDER BY
CASE
WHEN step = 'First' THEN 1
WHEN step = 'Second' THEN 2
WHEN step = 'Third' THEN 3
WHEN step = 'Fourth' THEN 4
ENDمثال مرتبسازی با استفاده از یک عبارت CASE

در اینجا مثالی که از پایگاه داده نمونه شامل شده با متابیس استفاده میکند که میتوانید خودتان امتحان کنید. بگویید میخواهیم تعداد سفارشها در هر دسته محصول را ببینیم، اما نیاز داریم آنها را مثل این مرتب کنیم: Widget، Gizmo، Gadget، Doohickey. در اینجا کد با statement case:
-- میخواهیم دو ستون برگردانیم، مرتب شده بر اساس products.category
SELECT products.category,
Count(*)
FROM orders
LEFT JOIN products
ON orders.product_id = products.id
GROUP BY products.category
-- عبارت CASE یک مقدار جدید برای مرتبسازی assign میکند
ORDER BY CASE
WHEN products.category = 'Widget' THEN 1
WHEN products.category = 'Gizmo' THEN 2
WHEN products.category = 'Gadget' THEN 3
WHEN products.category = 'Doohickey' THEN 4
ENDاین ترفند به خصوص با نمودارهای funnel زمانی که نیاز به حفظ sequence دارید مفید است.
[
](../visualization/histograms.html)