DECLARE @today as Date, @yesterday as Date;
Set @today = convert(date, getdate());
Set @yesterday = convert(date, dateadd(day, -1, getdate()));
SELECT m.Name, o.Created,
Count(DISTINCT(CASE WHEN Status = 'N' And o.Date = @today Then i.ID END)) as NewQ,
Count(DISTINCT(CASE WHEN Status = 'N' And o.Date = @yesterday Then i.ID END)) as YdNewQ,
Count(DISTINCT(CASE WHEN Status = 'W' And o.Date = @today Then i.ID END)) as WaitingQ,
Count(DISTINCT(CASE WHEN Status = 'W' And o.Date = @yesterday Then i.ID END)) as YDWaitingQ,
Count(DISTINCT(CASE WHEN Status = 'U' And o.Date = @today Then i.ID END)) as ProblemQ,
Count(DISTINCT(CASE WHEN Status = 'U' And o.Date = @yesterday Then i.ID END)) as YdProblemQ,
Count(DISTINCT(CASE WHEN Status = 'Z' And o.Date = @today Then i.ID END)) as CancelledQ,
Count(DISTINCT(CASE WHEN Status = 'Z' And o.Date = @yesterday Then i.ID END)) as YdCancelledQ
FROM Orders i
LEFT JOIN OrderItems o ON o.OrderID = i.ID
LEFT JOIN NomenclUS m ON m.ID = o.ProductID
WHERE i.Status <> 'Z' AND o.Created >= dateadd(day, -2, getdate())
GROUP BY o.Created, m.CatID, m.CatName,m.Name
ORDER BY o.Created, m.CatID
def c(n, k):
t = min(n - k, k)
n_fact = [n-i for i in range(t)]
for i in range(t):
for j in range(len(n_fact)):
if n_fact[j] % (i + 1) == 0:
n_fact[j] = n_fact[j] // (i + 1)
break
result = 1
for j in range(len(n_fact)):
result *= n_fact[j]
return result
print(c(500, 1))
print(c(500, 5))
print(c(500, 10))
SELECT pd.product_id,
d.name,
d.discount_percent,
d.discount_amount
FROM s_products_discount pd
INNER JOIN s_discounts d
ON d.id = pd.discount_id
AND d.visible = 1
AND d.date_from <= '2018-05-05'
AND d.date_to >= '2018-05-05'
WHERE pd.product_id IN ('41987', '41988', '41989', '41990', '41991', '41992', '41993', '41994')
AND NOT EXISTS (SELECT 1
FROM s_discounts dd
WHERE dd.id = pd.discount_id
AND dd.priority > d.priority
AND dd.visible = 1
AND dd.date_from <= '2018-05-05'
AND dd.date_to >= '2018-05-05')