第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在MySQL中計(jì)算運(yùn)行總數(shù)

在MySQL中計(jì)算運(yùn)行總數(shù)

牧羊人nacy 2019-06-16 14:39:40
在MySQL中計(jì)算運(yùn)行總數(shù)我有一個(gè)MySQL查詢:SELECT DAYOFYEAR(`date`)  AS d, COUNT(*) FROM  `orders` WHERE  `hasPaid` > 0GROUP  BY dORDER  BY d返回如下內(nèi)容:d  | COUNT(*) |20 |  5       |21 |  7       |22 | 12       |23 |  4       |我真正想要的是在結(jié)尾的另一篇專欄文章,以顯示正在運(yùn)行的總數(shù):d  | COUNT(*) | ??? |20 |  5       |   5 |21 |  7       |  12 |22 | 12       |  24 |23 |  4       |  28 |這個(gè)是可能的嗎?
查看完整描述

3 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

對(duì)于您來(lái)說(shuō),這可能是一個(gè)更簡(jiǎn)單的解決方案,可以防止數(shù)據(jù)庫(kù)執(zhí)行大量的查詢。它只執(zhí)行一個(gè)查詢,然后在一次傳遞中對(duì)結(jié)果做一些計(jì)算。

SET @runtot:=0;SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rtFROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d    ORDER  BY d) AS q1

這將為您提供一個(gè)額外的RT(運(yùn)行總計(jì))列。不要錯(cuò)過(guò)頂部的set語(yǔ)句,以便首先初始化正在運(yùn)行的ALUL變量,否則只會(huì)得到NULL值的列。


查看完整回答
反對(duì) 回復(fù) 2019-06-16
?
桃花長(zhǎng)相依

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊

SELECT 
   DAYOFYEAR(O.`date`)  AS d, 
   COUNT(*),
   (select count(*) from `orders` 
       where  DAYOFYEAR(`date`) <= d and   `hasPaid` > 0)FROM  
  `orders` as OWHERE  
  O.`hasPaid` > 0GROUP  BY dORDER  BY d

這將需要一些語(yǔ)法調(diào)優(yōu)(我沒(méi)有MySQL來(lái)測(cè)試它),但它向您展示了這個(gè)想法。子查詢只需返回并將您已經(jīng)包含在外部查詢中的所有新內(nèi)容加起來(lái),并且它必須對(duì)每一行都這樣做。

看一看這個(gè)問(wèn)題如何使用聯(lián)接來(lái)完成相同的任務(wù)。

用不斷增長(zhǎng)的數(shù)據(jù)來(lái)解決性能下降的問(wèn)題:因?yàn)橛凶畲笾?。一年中?66天,我假設(shè)您沒(méi)有針對(duì)多年運(yùn)行此查詢,子查詢將被評(píng)估366次。有了正確的日期索引和hasPaid標(biāo)志,您就會(huì)沒(méi)事的。


查看完整回答
反對(duì) 回復(fù) 2019-06-16
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

從MySQL 8開始,您將使用窗口函數(shù)對(duì)于這種查詢:

SELECT dayofyear(`date`) AS d, count(*), sum(count(*)) OVER (ORDER BY dayofyear(`date`))FROM `orders`WHERE `hasPaid` > 0GROUP BY dORDER BY d

在上面的查詢中,聚合函數(shù)count(*)嵌套在窗口函數(shù)中。sum(..) OVER (..),這是可能的,因?yàn)?/trans>SQL中操作的邏輯順序..如果這太讓人費(fèi)解,您可以很容易地使用派生表或WITH條款要更好地構(gòu)造查詢:

WITH daily (d, c) AS (
  SELECT dayofyear(`date`) AS d, count(*)
  FROM `orders`
  WHERE `hasPaid` > 0
  GROUP BY d)SELECT d, c, sum(c) OVER (ORDER BY d)ORDER BY d


查看完整回答
反對(duì) 回復(fù) 2019-06-16
  • 3 回答
  • 0 關(guān)注
  • 1148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)