2017-07-03 1 views
0

De tous les produits disponibles dans la catégorie "Livres", quel pourcentage avez-vous commandé au cours des 3 derniers mois?Trouvez le pourcentage de produits commandés

ORDERS 
order_id 
customer_id 
order_date 
product_id 

PRODUCTS 
product_id 
product_name 
product_category 
product_price 

Répondre

0

Je suppose que vous êtes après un pourcentage de compteur. Si vous voulez comparer des valeurs, vous devrez changer la sélection ci-dessous un peu. Voici comment je le ferais. Veuillez noter que je ne l'ai pas exécuté donc vous pouvez avoir quelques erreurs de syntaxe mais il devrait être facile de les corriger.

WITH books AS (
    SELECT order_date 
    FROM orders 
    JOIN products 
     ON orders.product_id = products.product_id 
    WHERE products.product_category = 'books' 
), 
last_three_months AS (
    SELECT 0 as counter_1, count(*) AS counter_2 
    FROM books 
    WHERE order_date > DATEADD(MONTH, -3, GETDATE()); 
), 
total_orders AS (
    select count(*) AS counter_1, 0 as counter_2 
    FROM books 
), 
all_together AS (
SELECT counter_1, counter_2 
    FROM last_three_months 
UNION ALL 
SELECT counter_1, counter_2 
    FROM total_orders 
), 
sale_sums AS (
    SELECT SUM(counter_2) AS counter_2, SUM(counter_1) AS counter_1 
    FROM all_together 
) 
SELECT counter_2/counter_1 * 100 
FROM sale_sums 
0

Essayez cette requête simple. C'est un simple PSQL. Apprendre des syntaxes simples et vous serez capable de le faire par vous-même.

WITH ordersLastThree as 
(
Select o.* FROM PRODUCTS p,ORDERS o where p.product_id=o.product_id and 
p.product_category = [Books product_category] 
and o.order_date >= DATEADD(MONTH, -3, GETDATE()) 
) 
Select (ISNULL((Select count(*) from ordersLastThree),1)*100)/count(o.*) as Result 
FROM PRODUCTS p,ORDERS o where p.product_id=o.product_id and 
p.product_category = [Books product_category] 
0

vous devez d'abord nous dire la base de données que vous utilisez alors ..

il Varry en conséquence .. si elle Mysql et C# fin fornt alors le code wiil

.. ..accepte la requête row by sql retournée dans daatareader puis applique le calcul. j'espère que cela effacera votre doute